Rsync по ssh
rsync -zav --progress -e "ssh -p22 -i $ssh_key" --recursive $local_directory $username@$server:$target_directory
Инкриментный Backup. Rsync
#!/bin/bash
############# Задаем переменные ###############
# Папка, куда будем складывать архивы
SYST_DIR=/backup/
###### Создаем функцию ####################
backup_func (){
# Создаем папку для инкрементных бэкапов
mkdir -p ${SYST_DIR}${SRV_NAME}/increment/
# Запускаем непосредственно бэкап с параметрами
/usr/bin/rsync -avz --progress --delete ${SRV_DIR} ${SYST_DIR}${SRV_NAME}/current/ --backup --backup-dir=${SYST_DIR}${SRV_NAME}/increment/`date +%Y-%m-%d`/
# Чистим
COUNT=15 # Сколько свежих каталогов оставить
ls -dt "${SYST_DIR}${SRV_NAME}/increment"/*/ | tail -n +$((COUNT+1)) | xargs -I {} rm -r -- "{}"
date
echo "Finish backup ${SRV_DIR}"
}
################### конец функции ##########
### user1.Vladimir_J
SRV_DIR=/home/vladimir/SMB/
SRV_NAME=Vladimir_J
backup_func
### user2. Anna_P
SRV_DIR=/home/Anna_P/SMB/
SRV_NAME=Anna_P
backup_func
Ключи
- -a, режим архивирования, включает ключи -rlptgoD;
- -v, выводит имена копируемых файлов;
- -z, включение режим сжатия; rsync сжимает данные перед отправкой и распаковывает их на конечной стороне после получения.
Это может уменьшить объем данных, передаваемых по сети, особенно при копировании больших файлов или больших объемов данных
- -P или -- progress отображение прогресса при копировании;
- -r, каталоги копируются рекурсивно;
- --delete — удаления файлов, которых нет в исходной директории
rsync -a --delete-after /data/ /backup/
в данном примере выполняется синхронизация каталога источника /data с каталогом /backup.
Ключ delete-after по завершении операции удалит все файлы из каталога backup, которых нет в data.
Ключ -a позволяет копировать только измененные файлы.
- --backup, это опция позволяет создавать резервные копии файлов, которые были изменены или удалены.
При использовании этой опции rsync сохраняет копию каждого файла, который был изменен или удален, в указанном каталоге резервных копий