Назад | Перейти на главную страницу

как копировать и gzip файлы по отдельности через ssh

Я хотел бы перенести каталог с несжатыми файлами с помощью ssh, используя gzip по пути. Может ли кто-нибудь порекомендовать простой лайнер для достижения этой цели?

например.

fileA.ext -> ssh / pipe -> fileA.ext.gz

Я передавал tar поверх ssh со сжатием, но тогда файлы не сжимаются в конце канала. В этом случае я бы хотел, чтобы они оставались сжатыми.

Предварительное сжатие было бы возможно, но для этого потребуется место локально или потребуется соединение для каждого файла (?)

Есть более 6000 файлов, и я бы предпочел решение, в котором все файлы можно было бы передать с помощью одного соединения (хотя я использую ключи для аутентификации!)

Я полагаю, вы предпочтете сначала заархивировать их, а затем переслать.

cat dafile | gzip -c | ssh remote "cat > dafile"

Повторите с соответствующей конструкцией цикла. Например.

find -type f | while read fname ; do cat $fname | gzip -c | ssh remote "cat > $fname" ; done

... Или что-то в этом роде. Необходимо настроить доступ pkey, иначе это будет одно масштабное упражнение по быстрому вводу пароля.

РЕДАКТИРОВАТЬ:

По вопросу об одном соединении см. Man ssh_config ControlMaster. Это означает, что вы сэкономите на согласовании 5999 из 6000 сеансов SSH.

РЕДАКТИРОВАТЬ2:

Ха-ха! Я выигрываю!

tar zcf - /dir/of/files | ssh remote "tar zxf - --to-command=mygzip.sh"

mygzip.sh, присутствующий на удаленном компьютере, выглядит так:

#!/bin/sh
mkdir -p "$(dirname $TAR_FILENAME)"
gzip -c > "${TAR_FILENAME}.gz"

GNU Parallel это легко сделать:

find . -type f | parallel "gzip -c {} | ssh server \"cat>{}.gz\""

который, однако, также найдет и отправит файлы в каталогах ниже начального каталога.

или, наоборот, если вы хотите отправить только все обычные файлы в один каталог:

parallel "gzip -c {} | ssh server \"cat>{}.gz\"" ::: *

У каждого есть свои приемы копирования файлов без SCP. Вот мой (не использует SSH), http://linuxtipsandtricks.com/file-manipulation/transferring-files-with-netcat-nc/

Во-вторых, если вы настаиваете на использовании SSH, вы можете добавить «-c arcfour» в свой SSH.

HTH

Вы должны проверить этот страница.

Он сравнивает время выполнения для этого типа передачи файлов с использованием scp, tar + ssh и tar + nc со сжатием ssh или gzip и без него.

Помимо предоставления нескольких вариантов выполнения вашей задачи, результаты интересны.