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

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


transfer_files_over_the_network

Передача файлов по сети

Быстрое копирование

Просто перейдите в каталог с необходимыми файлами и запустите такую команду:

$ python -m SimpleHTTPServer

При этом запускается базовый веб-сервер, который делает данный каталог доступным для любого браузера в сети.

Основы команды rsync

Синтаксис rsync такой же как и у scp

rsync file1 file2 ... [пользователь]@[хост]:[директория назначения]
 
rsync mc-4.8.7-8.el7.x86_64.rpm titov@172.16.30.165:~/

Для каталогов.
Чтобы передать всю иерархию каталога — со всеми символическими ссылками, правами доступа, режимами файлов и устройствами, — используйте параметр -a.

$ rsync -a dir host:destination_dir

Создание точной копии структуры каталога

По умолчанию команда rsync копирует файлы и каталоги, не принимая во внимание уже имеющееся содержимое каталога назначения. Например, если вы передали каталог d, который содержит файлы a и b, компьютеру, на котором уже есть файл d/c, то после выполнения команды rsync этот компьютер будет содержать файлы d/a, d/b и d/c.

Чтобы создать точную копию каталога источника, необходимо удалить те файлы в каталоге назначения, которых нет в исходном каталоге (вроде файла d/c в нашем примере). Чтобы выполнить это, используйте параметр –delete:

$ rsync -a --delete dir host:destination_dir

Использование завершающей косой черты

Допустим, что у вас есть каталог dir, который содержит файлы a и b (dir/a и dir/b). Вы запускаете версию команды с косой чертой, чтобы передать их в каталог dest_dir на хосте:

$ rsync -a dir/ host:dest_dir

По окончании передачи каталог dest_dir будет содержать копии файлов a и b, но не каталога dir. Если же вы опустите конечную косую черту после dir, в каталоге dest_dir окажется копия каталога dir с файлами a и b внутри него.

Исключение файлов и каталогов

Допустим, что вы желаете переместить локальный каталог src на хост host, исключив при этом все, что называется .git. Это можно выполнить так:

$ rsync -a --exclude=.git src host:

Несколько советов по использованию шаблонов исключения.

  • Можно использовать столько параметров –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, чтобы выполнить сжатие данных перед передачей:

$ rsync -az dir host:destination_dir

Ограничение ширины полосы пропускания

Очень легко «засорить» интернет-подключение, выгружая на удаленный хост большие объемы данных. Даже если вы не станете использовать (обычно большую) скорость скачивания во время такой передачи, ваше соединение все же станет довольно медленным, если вы позволите команде rsync работать максимально быстро, поскольку исходящие TCP-пакеты, вроде запросов HTTP, будут соперничать с вашими передачами за ширину полосы. Чтобы разобраться с этим, применяйте параметр –bwlimit, который даст вашей выгрузке больше пространства для маневра. Чтобы, например, ограничить ширину пропускания значением 10 000 Кбит в секунду, следует выполнить такую команду:

$ rsync --bwlimit=10000 -a dir host:destination_dir
transfer_files_over_the_network.txt · Последние изменения: 2016/01/21 08:41 — sander