Я делаю бэкап по 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