Яндекс.Метрика

пятница, 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 -

4 комментария:

  1. 3-я лаба по информатике на 8-м факультете :) Было бы неплохо, кстати, пояснить, зачем оно все нужно. Когда cat, когда dd, зачем tar-у столько ключей (есть кстати pax, он, по-моему более понятный, хотя я почему-то все равно tar-ом пользуюсь).

    ОтветитьУдалить
  2. Пояснила. А чем отличается dd от cat в этой ситуации, я не знаю.

    ОтветитьУдалить
  3. Пользоваться dd так, как ты это делаешь — нельзя, потому что по умолчанию dd копирует блоками по 512 байт. Можно явно указать правильный размер блока, но вообще, dd тут не место.

    ОтветитьУдалить
  4. А еще для полноты добавь примеры с dump/restore, rsync. А еще круче показать, как это делается на лету в zfs и hammer.

    ОтветитьУдалить