Я хочу сделать задание cron, которое выгружает базу данных MySQL, а tar - дамп с датой | час | минутой, а затем scp - на удаленный сервер.
0 */2 * * * mysqldump -uroot myBase>myBase.sql && tar -zcf /var/backups/myBase`-date +\%Y\%m\%d\%H\%M\%S`.tar.gz myBase.sql && ...
Теперь мне не хватает части scp.
Я не знаю, как получить файл .tar.gz, недавно созданный с его суффиксом date / hour / minute.
Не нужно scp, просто сжать файл и записать его на удаленный путь будет достаточно.
tar cvzf - /path/to/myBase.sql | ssh USER@HOST "dd of=/path/to/backups/myBase$(date +\%Y\%m\%d\%H\%M\%S).tar.gz"
Команда - сообщает tar, чтобы не создавать выходной файл, вместо этого он будет записывать выходы в stdout. см. man tar.
Вы также можете использовать cat >/path/to/bsckups/... вместо dd.
Даже вы можете использовать rsync с опцией -z, которая сравнивает файл перед передачей, но будет распаковываться после пересылки в удаленном пути.
Или вы можете сбрасывать непосредственно на удаленный путь, если сжатие не является вопросом.
mysqldump .... | ssh USER@HOST "dd ..."
Также вы можете использовать -h вариант mysqldump как показано ниже на удаленном сервере (теперь это локально) и дамп с локального сервера (теперь это удаленный сервер):
mysqldump -h HOSTNAME/IP ... > /path/in/local
Не нужно scp, просто сжать файл и записать его на удаленный путь будет достаточно.
tar cvzf - /path/to/myBase.sql | ssh USER@HOST "dd of=/path/to/backups/myBase$(date +\%Y\%m\%d\%H\%M\%S).tar.gz"
Команда - сообщает tar, чтобы не создавать выходной файл, вместо этого он будет записывать выходы в stdout. см. man tar.
Вы также можете использовать cat >/path/to/bsckups/... вместо dd.
Даже вы можете использовать rsync с опцией -z, которая сравнивает файл перед передачей, но будет распаковываться после пересылки в удаленном пути.
Или вы можете сбрасывать непосредственно на удаленный путь, если сжатие не является вопросом.
mysqldump .... | ssh USER@HOST "dd ..."
Также вы можете использовать -h вариант mysqldump как показано ниже на удаленном сервере (теперь это локально) и дамп с локального сервера (теперь это удаленный сервер):
mysqldump -h HOSTNAME/IP ... > /path/in/local
Не нужно scp, просто сжать файл и записать его на удаленный путь будет достаточно.
tar cvzf - /path/to/myBase.sql | ssh USER@HOST "dd of=/path/to/backups/myBase$(date +\%Y\%m\%d\%H\%M\%S).tar.gz"
Команда - сообщает tar, чтобы не создавать выходной файл, вместо этого он будет записывать выходы в stdout. см. man tar.
Вы также можете использовать cat >/path/to/bsckups/... вместо dd.
Даже вы можете использовать rsync с опцией -z, которая сравнивает файл перед передачей, но будет распаковываться после пересылки в удаленном пути.
Или вы можете сбрасывать непосредственно на удаленный путь, если сжатие не является вопросом.
mysqldump .... | ssh USER@HOST "dd ..."
Также вы можете использовать -h вариант mysqldump как показано ниже на удаленном сервере (теперь это локально) и дамп с локального сервера (теперь это удаленный сервер):
mysqldump -h HOSTNAME/IP ... > /path/in/local