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

gzip передает вывод в команду ssh

Я делаю бэкап по ssh вот так:

mysqldump -u dbuser -pXXXXXXXX dbname | ssh -i ~/.ssh/id_rsa_backup backup@my.server.com 'cat > /var/backups/services/my_service/db/$(date +"%Y-%m-%d").sql'

Как отправить сжатые данные для экономии трафика и дискового пространства?

добавив это в ~ / .ssh / config, ssh будет архивировать на лету :)

http://linux.die.net/man/5/ssh_config для более подробных опций

Host *
    Compression yes
    # from 1 (fast) to 9 (slow, best). The default level is 6
    # CompressionLevel 9
    # ServerAliveInterval 15
    # ServerAliveCountMax 3
    # KeepAlive yes

Host bak-serv
    Hostname my.server.com
    IdentityFile ~/.ssh/id_rsa_backup
    User backup
    # Port 22

с вашей командой вы получите sql.gz в конце, а не простой текстовый файл sql.

mysqldump -u dbuser -pXXXXXXXX dbname \
  | gzip | cat | ssh -i ~/.ssh/id_rsa_backup backup@my.server.com \
  'cat > /var/backups/services/my_service/db/$(date +"%Y-%m-%d").sql.gz'

становится

mysqldump -u dbuser -pXXXXXXXX dbname \
   | ssh bak-serv \
   | gzip -c > /var/backups/services/my_service/db/$(date +"%Y-%m-%d").sql.gz