Думаю, эта команда поможет.
ssh user@host "cd /path/to/data/;tar zc directory_name" | tar zx
РЕДАКТИРОВАТЬ: в более ранней версии было два неправильных параметра «f».
Теперь, прежде всего, вы должны выполнить эту команду с целевого хоста. И подробности, которые необходимо пояснить:
Как видите, эта команда выполняет сжатие на лету и сохраняет полосу пропускания. Для получения лучших результатов можно использовать и другие способы сжатия, но помните, что сжатие и распаковка требуют циклов ЦП.
`foo`
essustitución de comando , no sustitución de proceso. $(foo)
también es sustitución de comandos, y es la forma preferida ya que es más fácil usar la sustitución de comandos anidados:$(foo1 $(foo2 $(foo3...)))
.
Con la sustitución de comandos, `foo`
/ $(foo)
, la salida de foo
se usa como palabras en la línea de comandos. Entonces for in $(echo a b c)
se vuelve como si hubieras usado for i in a b c
en su lugar. El comando en la sustitución de comando se ejecuta primero, se obtiene su salida y luego la salida se usa para crear la siguiente línea de comando, que luego se ejecuta, y así sucesivamente. La división de campos, la expansión de comodines, etc. suceden, por lo que citar es una consideración importante en la sustitución de comandos.
Con sustitución de proceso , <(foo)
/ >(foo)
, el stdin/stdout del proceso se proporciona como un archivo, por lo que cat <(foo)
se vuelve como si hubiera usado foo > /some/file
y cat /some/file
, y tee >(foo)
se vuelve como si hubiera hecho tee /some/file
y foo < /some/file
. Los comandos se ejecutan simultáneamente. Dado que el shell no ve la salida, la división de campos y la expansión de comodines no son una preocupación.