Инструменты пользователя

Инструменты сайта


transfer_files_over_the_network

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

transfer_files_over_the_network [2016/01/21 08:41] (текущий)
sander создано
Строка 1: Строка 1:
 +====== Передача файлов по сети ======
 +===== Быстрое копирование =====
 +Просто перейдите в каталог с необходимыми файлами и запустите такую команду:​
 +<code bash>
 +$ python -m SimpleHTTPServer
 +</​code>​
 +При этом запускается базовый веб-сервер,​ который делает данный каталог доступным для любого браузера в сети.
 +===== Основы команды rsync =====
 +Синтаксис rsync такой же как и у scp
 +<code bash>
 +rsync file1 file2 ... [пользователь]@[хост]:​[директория назначения]
  
 +rsync mc-4.8.7-8.el7.x86_64.rpm titov@172.16.30.165:​~/​
 +</​code>​
 +
 +Для каталогов.\\
 +Чтобы передать всю иерархию каталога — со всеми символическими ссылками,​ правами доступа,​ режимами файлов и устройствами,​ — используйте параметр **-a**.
 +
 +<code bash>
 +$ rsync -a dir host:​destination_dir
 +</​code>​
 +
 +==== Создание точной копии структуры каталога ====
 +
 +По умолчанию команда rsync копирует файлы и каталоги,​ не принимая во внимание уже имеющееся содержимое каталога назначения. Например,​ если вы передали каталог d, который содержит файлы a и b, компьютеру,​ на котором уже есть файл d/c, то после выполнения команды rsync этот компьютер будет содержать файлы d/a, d/b и d/c.\\
 +
 +Чтобы создать точную копию каталога источника,​ необходимо удалить те файлы в каталоге назначения,​ которых нет в исходном каталоге (вроде файла d/c в нашем примере). Чтобы выполнить это, используйте параметр **--delete**:​
 +<code bash>
 +$ rsync -a --delete dir host:​destination_dir
 +</​code>​
 +
 +==== Использование завершающей косой черты ====
 +
 +Допустим,​ что у вас есть каталог dir, который содержит файлы a и b (dir/a и dir/b). Вы запускаете версию команды с косой чертой,​ чтобы передать их в каталог dest_dir на хосте:
 +<code bash>
 +$ rsync -a dir/ host:​dest_dir
 +</​code>​
 +По окончании передачи каталог dest_dir будет содержать копии файлов a и b, но не каталога dir. Если же вы опустите конечную косую черту после dir, в каталоге dest_dir окажется копия каталога dir с файлами a и b внутри него.
 +
 +==== Исключение файлов и каталогов ====
 +
 +Допустим,​ что вы желаете переместить локальный каталог src на хост host, исключив при этом все, что называется .git. Это можно выполнить так:
 +<code bash>
 +$ rsync -a --exclude=.git src host:
 +</​code>​
 +Несколько советов по использованию шаблонов исключения.
 +  * Можно использовать столько параметров --exclude, сколько необходимо.
 +  * Если вы применяете одни и те же шаблоны регулярно,​ поместите их в обычный текстовый файл (по одному шаблону в строке) и используйте параметр --exclude-from=file.
 +  * Чтобы исключить каталоги с именем item, но включить расположенные в них файлы, применяйте завершающий слеш: --exclude=item/​.
 +  * Шаблон исключения основан на полном имени файла или каталога и может содержать простые джокерные символы. Например,​ шаблону t*s соответствует имя this, но не имя ethers.
 +  * Если вы исключили каталог или файл, а потом обнаружили,​ что ваш шаблон является слишком строгим,​ используйте параметр --include, чтобы специальным образом включить еще один файл или каталог.
 +
 +==== Целостность переноса,​ меры предосторожности и подробные режимы ====
 +Когда вы в первый раз передаете полную иерархию каталогов на удаленный хост, команда rsync видит, что в пункте назначения нет ни одного из передаваемых файлов,​ поэтому она переносит все. Убедиться в этом позволит вам команда rsync -n.\\
 +
 +Вот несколько параметров,​ которые бывают удобны.
 +  * **--checksum** (сокращенно -c) — вычисляет контрольные суммы (обычно это уникальные сигнатуры) файлов,​ чтобы убедиться в их одинаковости. Для этого во время переноса потребуются дополнительные ресурсы ввода/​вывода и процессора,​ но, если вы работаете с важными данными или ваши файлы часто обладают одинаковым размером,​ этот параметр обязателен.
 +  * **--ignore-existing** — не затирает файлы, которые уже присутствуют на целевой стороне.
 +  * **--backup** (сокращенно -b) — не затирает файлы, которые уже есть на целевой стороне,​ а переименовывает их, добавляя к именам суффикс ~ до начала передачи новых файлов.
 +  * **--suffix=s** — изменяет суффикс,​ использованный в параметре --backup, c ~ на s.
 +  * **--update** (сокращенно -u) — не затирает на целевой стороне никаких файлов,​ которые обладают более поздней датой изменения по сравнению с соответствующими файлами источника.
 +
 +**Сжатие**
 +
 +Многим пользователям нравится применять параметр -z в сочетании с параметром -a, чтобы выполнить сжатие данных перед передачей:​
 +<code bash>
 +$ rsync -az dir host:​destination_dir
 +</​code>​
 +
 +==== Ограничение ширины полосы пропускания ====
 +
 +Очень легко «засорить» интернет-подключение,​ выгружая на удаленный хост большие объемы данных. Даже если вы не станете использовать (обычно большую) скорость скачивания во время такой передачи,​ ваше соединение все же станет довольно медленным,​ если вы позволите команде rsync работать максимально быстро,​ поскольку исходящие TCP-пакеты,​ вроде запросов HTTP, будут соперничать с вашими передачами за ширину полосы.
 +Чтобы разобраться с этим, применяйте параметр --bwlimit, который даст вашей выгрузке больше пространства для маневра. Чтобы, например,​ ограничить ширину пропускания значением 10 000 Кбит в секунду,​ следует выполнить такую команду:​
 +<code bash>
 +$ rsync --bwlimit=10000 -a dir host:​destination_dir
 +</​code>​
transfer_files_over_the_network.txt · Последние изменения: 2016/01/21 08:41 — sander