среда, 7 января 2009 г.

Копирование файлов в среде UNIX через сеть

SCP
scp [-Cr] /path/to/mySourceFile [ anotherSources ... ] destinationHostName:/path/to/destination/file
scp [-Cr] [[user@]sourceHost:]mySourceFile [ anotherSources ... ] [[otherUser@]destinationHostName:/path/to/destination/file]
Ключ -r используется для копирования директории.
Ключ -С включает компрессию. По умолчанию используется 3DES. Чтобы изменить алгоритм применяйте ключ -с.
Недостатки:
1)При копировании для каждого файла порождается копирующий процесс. Из-за чего для большого количества файлов источника процесс копирования может замедлиться.
2)scp не знает о символических ссылках, поэтому
когда используется ключ -r возможны ситуации, когда эта утилита будет пытаться копировать бесконечный объем данных.
RSYNC
rsync -e ssh [-avz] /path/to/myFile [ /path/to/anotherMyFile ... ] destinationHostName:/destination/file
rsync -ave ssh source.server:/path/to/source /destination/dir
Ключ -a желательно использовать всегда. Сохраняет права доступа файлов и знает про символические ссылки.
-z включает компрессию.
-v выводит список копирующихся файлов.
-e ssh указывает, кто будет "транспортом". Всегда используется.
Недостатки этой утилиты:
1)"экстремальный" синтксис.
2)надо помнить, что используется для транспорта другая программа.
TAR
tar -cf - /some/file | ssh hostName tar -xf - -C /destination
То же, но с компрессией:
tar -czf - /some/file | ssh hostName tar -xzf - -C /destination
Для переноса файлов локально с сохранением прав доступа:
tar cf - /some/file | (cd /some/file; tar xf -)
Эта утилита сохраняит права доступа файлов и хорошо работает с символическими ссылками.
Недостатки:
1)Синтаксис тяжел для запоминания.
2)Для малого количества файлов scp быстрее.