Я хотел бы перенести каталог с несжатыми файлами с помощью 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 и без него.
Помимо предоставления нескольких вариантов выполнения вашей задачи, результаты интересны.