Копирование файлов по SSH с архивированием на лету через TAR

Опубликовано в Веб-разработка

Разбираемся с архивированием на лету через протокол SSH, используя TAR.

Копирование осуществляется через утилиту tar и выполняется примерно следующим набором команд:

cd /local/dir; tar cf - . | ssh remotehost "cd /destination/dir; tar xf -"

Что нужно знать о синтаксисе команды tar

tar [-] A --catenate --concatenate | c --create | d --diff --compare | --delete | r --append | t --list | --test-label | u --update | x --extract --get [options] [pathname ...]

Теперь разберем, что же происходит в коде:

  1. cd /local/dir; - осуществляется переход к папке[1] /local/dir, которая будет архивироваться;
  2. tar cf - . - утилита tar выполняет слудеющие операции: 
    1. параметр -c говорит о том, что нужно создать новый архив;
    2. параметр -f говорит о том, что используется архивный файл (или устройство);
    3. парамерт - говорит о том, что tar должен использовать стандартный вывод, а не записывать данные в файл
    4. параметр . говорит о том, что архивироваться будет папка, в которой находится пользователь, и из которой выполняется команда tar (в данном случае это папка /local/dir из п.1)
  3. | ssh означает, что вывод утилиты tar будет передан в ssh-исполняемую следом команду;
  4. remotehost обычно имеет вид [имя_пользователя]@[адрес_сервера] и означает, что команда будет выполнена на удаленном сервере;
  5. "cd /destination/dir; tar xf -" - в кавычки заключена последовательность команд для выполнения на удаленном сервере и в SSH вводится имеено в кавычках, разберем ее в следующем пункте;
  6. cd /destination/dir; - осуществляется переход к папке[1], куда будут разархивированы файлы;
  7. tar xf -- утилита tar выполняет слудеющие операции:
    1. параметр -x говорит о том, что будет происходить распаковка;
    2. параметр -f говорит о том, что используется архивный файл (или устройство);
    3. параметр  -  говорит о том, что tar должен использовать не файл, а стандартный вывод.

Также можно использовать дополнительно следующие параметры с tar:

  1. параметр -v сообщает tar действовать вербально, т.е. отображая, либо получая исчерпывающую информацию о файлах в процессе обработки;
  2. -z - параметр сообщает tar использовать программу сжатия, когда работа будет вестись с файлами;
    или
    -j - параметр сообщает tar выполнять чтение или запись архивов, используя компрессор bzip2.

[1] - путь к папке указывается абсолютный, начиная с корневой папки сервера

Материалы по этой теме: