Яндекс.Метрика
Показаны сообщения с ярлыком tar. Показать все сообщения
Показаны сообщения с ярлыком tar. Показать все сообщения

пятница, 8 июля 2011 г.

Копирование директорий на удалённый сервер используя tar, ssh, cat или dd

Как заархивировать и скопировать на сервер папку с другого сервера (заархивировать папку с удаленного компа).

Оригинал здесь.

1. Архивирование директории на удалённый сервер.
С использованием cat:
tar zcvfp - /home/user/sourcedir | ssh user@remote_host "cat > ~/from_somehost.tar.gz"


tar — архивирует, и с ключом z сжимает:
z — сжать, c — создать, v — выводить на экран, что архивирует, p — не менять права на файлы, f — в какой файл запихнуть архив, если указан прочерк -, то выводить на стандартный вывод. Далее идет имя каталога, который нужно заархивировать.

То, что tar выведет на стандартный вывод, перенаправляется на удаленный сервер (user@remote_host), где и запускается команда "cat > ~/from_somehost.tar.gz". Cat принимает на вход то, что выдал tar, а затем все это складывает в файл /from_somehost.tar.gz.


С использованием dd:
tar zcvfp - /home/user/sourcedir | ssh user@remote_host "dd of=~/from_somehost.tar.gz"


В этом примере вместо cat используется dd (disk destroy ;), у которой есть параметр of (output file), то есть тот, куда нужно складывать то, что пришло от tar.

Остальное по аналогии должно быть понятно.


2. Архивирование с удалённой машины на локальную:
С использованием cat:
ssh user@remote_host "tar zcvfp - /home/user/sourcedir" | cat > ~/from_somehost.tar.gz
С использованием dd:
ssh user@remote_host "tar zcvfp - /home/user/sourcedir" | dd of=~/from_somehost.tar.gz


3. Ну и напоследок - распаковка удалённого архива на локальную машину.
ssh user@remote_host "cat /home/user/from_somehost.tar.gz" |tar xvfp -