На удаленный сервер
sshpass -p "password" scp -P 7855 /root/backup_new/20240215.sql user@135.158.151.28:/volume2/backup/
password — пароль к удаленному серверу7855 — порт удаленного сервера/root/backup_new/20240215.sql — файл на текущем сервереuser — пользователь удаленного сервера135.158.151.28 — IP удаленного сервера/volume2/backup/ — путь на удаленном сервере куда бэкапим
Локально
zip -r -0 /root/backup_new_`date +"%Y%m%d"`.zip /var/www/b2b
zip -r -0 — не использовать сжатие, архивируем с помощью zip/root/backup_new/backup_new_`date +"%Y%m%d"`.zip — создать файл в директории /root/backup_new/ с названием backup_new_ + текущая дата
Пример реального скрипта что используется на сервере
#!/bin/bash
#Бэкап базы данных
mysqldump --single-transaction --user=root --password=123456 b2b > /root/backup_new/b2b_`date +"%Y%m%d"`.sql
sleep 10
sshpass -p "password" scp -P 7855 /root/backup_new/b2b_`date +"%Y%m%d"`.sql user@135.158.151.28:/volume2/backup
#Бэкапим сайт
zip -r -0 /root/backup_new/backup_new_`date +"%Y%m%d"`.zip /var/www/b2b
sleep 60
sshpass -p "password" scp -P 7855 /root/backup_new/b2b_`date +"%Y%m%d"`.zip user@135.158.151.28:/volume2/backup/
# Удаление файлов .zip и .sql что старше 10 дней
# Директория, в которой находятся файлы
directory="/root/backup_new"
# Перейти в директорию
cd "$directory" || exit
# Удаление файлов .zip и .sql старше 5 дней
find . -maxdepth 1 -type f \( -name "*.zip" -o -name "*.sql" \) -mtime +10 -exec rm {} \;
Когда что то не работает
Включаем режим отладки
sshpass -p "password" scp -P 7855 -v /root/backup_new/20240215.sql user@135.158.151.28:/volume2/backup/
Для этого добавляем -v
Также можно просто команду scp -P 7855 -v /root/backup_new/20240215.sql user@135.158.151.28:/volume2/backup/, она предложит сохранить ключи в память сервера