- Главная... arrow - Статьи... arrow | - LAN & NET arrow Как скопировать файлы с удаленного ПК, если есть только SSH?

#Записки о Unix/Linux/BSD/Solaris

Как скопировать файлы с удаленного ПК, если есть только SSH?
Автор H@wk!   
11:03:2009 г.



RSYNC Синхронизация файлов на удаленных хостах.

Аналогично rcp позволяет копировать файлы между хостами, но ускоряет процесс т.к. передает только измененные части (хитрый алгоритм на основе сравнения контрольных сумм). Позволяет копировать ссылки (links), специальные устройства (device), владельца и группу файла, права доступа. Позволяет использовать в качестве транспорта как rsh, так и ssh. Включает сервер rsyncd (доступ анонимный или с аутентификацией), порт 873/TCP. Я сервер не использую (не люблю, когда пароли лежат в открытом виде) и потому не описываю. Имя файла записывается в виде: [[user@]host:]file. Если файл назначения является именем директории, то исходные файлы копируются в нее. Если имя исходной директории завершается обычной косой чертой, то копируется содержимое директории, а не сама директория (почувствуйте разницу ;). Относительные имена отсчитываются относительно домашней директории соответствующего пользователя на соответствующем хосте. Если в качестве параметров указано только имя удаленного файла/директории, то выдается листинг. Нельзя копировать с одного удаленного хоста на другой. rsync должен быть установлен на обоих концах. Опции:

  • опции диалога:
    • -v (увеличить болтливость: один раз - имена передаваемых файлов; два раза - имена пропускаемых файлов; три раза - отладочная печать)
    • -q (совсем тихо)
    • --version
    • --progress (только в сочетании с -v)
    • --stats (статистика эффективности алгоритма)
    • --help
    • -n (не делать реальной пересылки, только отчет о предполагаемых действиях)
  • какие файлы включать в список проверки перед пересылкой
    • -r (рекурсивное копирование)
    • -x (не пересекать границы файловой системы при рекурсии)
    • --exclude=шаблон
    • --cvs-exclude (стандартный набор исключений, используемый cvs: *~, *.bak, *.o, core и т.д., включая содержимое файлов .cvsignore)
    • --exclude-from=имя-файла
    • --include=шаблон
    • --include-from=имя-файла
  • правила проверки на совпадение файлов
    • -I (пересылать файл даже если длина и время модификации совпадает на обоих концах)
    • --size-only (определять необходимость пересылки только по совпадению размеров файла)
    • --modify-window=секунд (если разница времени модификации меньше указанного числа, то файлы считаются одинаковыми; по умолчанию - 0)
    • -c (на исходном конце считается контрольная сумма (MD4) файла, на приемном конце она сравниваются с контрольной суммой локальной копии; если суммы совпадают, то пересылка не происходит)
    • -u (не изменять, если приемный файл новее исходного)
    • --existing (изменять только существующие файлы)
    • -W (копировать файлы целиком, не задействуя алгоритм сравнения)
  • backup (сохранять старую версию изменяемого файла)
    • -b (делать backup, суффикс по умолчанию - '~')
    • --suffix=суффикс (суффикс для backup)
    • --backup-dir (backup в указанную директорию)
  • обработка ссылок
    • -l (сохранять символьные ссылки; пропускаются по умолчанию)
    • --copy-links (обрабатывать символьные ссылки как обычные файлы)
    • --copy-unsafe-links (копировать ссылки, указывающие вовне исходного дерева)
    • --safe-links (игнорировать ссылки, указывающие вовне приемного дерева, и абсолютные ссылки)
    • -H (воссоздавать жесткие ссылки на приемном конце; срабатывает только если оба (а больше?) файла входят в список пересылки)
  • сохранение атрибутов файла
    • -a (архивный режим: синоним -rlpogDt)
    • -p (сохранять права доступа)
    • -o (сохранять владельца файла; только для root)
    • --numeric-ids (вместо имени владельца и группы пересылается uid и gid)
    • -g (сохранять группу файла; получатель должен быть членом группы)
    • -D (сохранять устройство; только для root)
    • -t (сохранять время модификации; очень рекомендуется, если предполагается повторная пересылка)
  • правила удаления
    • --delete (удалять на приемной стороне файлы, не существующие на исходной стороне)
    • --delete-excluded (удалять, если "несуществование" вызвано действием шаблона исключения)
    • --delete-after (удалять после передачи, а не до)
    • --ignore-errors (удалять даже при ошибках ввода/вывода)
    • --max-delete=число (не удалять более указанного числа файлов)
    • --force (удалять непустые директории; действует также при замене директории обычным файлом с тем же именем)
  • -R (относительные имена: в действительности передает имя файла из командной строки целиком вместе с именем директории, а не только файловую часть имени; осторожнее с символьными ссылками!)
  • -S (эффективно обрабатывать файлы с дырками)
  • --block-size=размер (размер блока для сравнения контрольных сумм - 700)
  • -e ssh (транспортный уровень; можно через переменную окружения RSYNC_RSH)
  • --rsync-path=путь (путь к rsync на удаленном хосте)
  • --partial (сохранять частично переданные файлы)
  • --timeout=секунд (по умолчанию 0 - бесконечность)
  • --temp-dir=директория (где хранить файлы во время пересылки)
  • --compare-dest=директория
  • --compress (gzip, но используется информация о пересылаемых структурах, что при большом числе неизмененных файлов будет полезно)

Синтаксис шаблона (и не лениво людям придумывать свои правила описания шаблонов?):

  • если шаблон начинается с обычной косой черты, то он сопоставляется с началом имени файла, иначе с концом имени файла
  • если шаблон завершается косой чертой, то он сопоставляется только с директорий
  • метасимволы *, ? и [ действуют как в шаблонах shell
  • если в шаблоне имеются две ** подряд, то все метасимволы могут сопоставляться с косой чертой, иначе их действие останавливается косыми чертами
  • если шаблон содершит нефинальную косую черту, то он сопоставляется полному имени файла, иначе последнему компоненту; только учтите, что алгоритм работает рекурсивно

Переменные окружения:

  • RSYNC_RSH=ssh
  • CVSIGNORE=шаблон

Типичный пример использования:

  • rsync -e ssh -vacu user@host:dir/ .
  • rsync -e ssh -vacu --exclude '.*.swp' . user@host:dir/

Страница проекта

Источник...

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code


Просмотров: 20872

  Коментарии (5)
RSS комментарии
 1 Написал(а) H@wk!, в 21:15 01.12.2011
Имя файла какое?  
scp user_name@:remote_server:~/file/file.txt /local/directory 
file.txt - файл, который копируем 
/local/directory - директория , в которую копируем
 2 Написал(а) Lef-f-f, в 17:39 01.12.2011
Чтобы скопировать файл с удаленного сервера на локальный компьютер, используется другой синтаксис SCP: 
 
scp user_name@remote_server:~/file 
 
у меня не сработал такой синтакс тянул с 8.2 фряши на сентос?? не подскажете почему?
 3 Написал(а) Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , в 21:18 20.05.2011
Почему то не пускает на сервер за шлюзом, на нестандартный порт. Проброс портов сделан - по SSH пускает.
 4 Написал(а) H@wk!, в 20:16 05.04.2011
Есть и можно использовать. Не буду говорить о всех минусах ftp протокола. Да и статья не об этом.
 5 Написал(а) п, в 18:18 05.04.2011
Так зачем так химичить, если в каждом релизе есть встроенный ftp сервер - ftpd ?
 
« Arpwatch настройка   RackTables - скрываем данные »

#COMMENT

FreeBSD 8.1 обновление php5-5....
Спасибо большое, сразу же помогла сортировка по алфавиту. Ре...
16/01/12 18:35 More...
By Antikiller

Ubuntu Server по Русски
У меня на работе такие же стоят, только ящик железный и UNIX...
10/01/12 21:39 More...
By abasin

FreeBSD монтирование USB HDD с...
А до этого устройство было смонтировано? Возможно оно занято...
23/12/11 15:04 More...
By H@wk!

FreeBSD монтирование USB HDD с...
подскажите пожалуйста пытаюсь смонтировать жёсткий диск USB ...
23/12/11 13:13 More...
By deadread

Учет трафика Linux - просто: D...
Обычно порт по умолчанию 667 а не 666, а подстроить можно в ...
15/12/11 12:45 More...
By Mescalito

Сейчас на сайте находятся:
3 гостей

Нашли ошибку!

Выделите текст и нажмите:
[Shift]+[Enter]
[Отправить]
Спасибо!