Skip to content

Instantly share code, notes, and snippets.

@jtprogru
Created January 2, 2021 16:43
Show Gist options
  • Select an option

  • Save jtprogru/bfc06947a7aeaebdafa5f69befe793c8 to your computer and use it in GitHub Desktop.

Select an option

Save jtprogru/bfc06947a7aeaebdafa5f69befe793c8 to your computer and use it in GitHub Desktop.
#!/bin/sh
export RSYNC_PASSWORD='P@S$W0Rd'
[email protected]::BackUp/
currentDate=`date +%F`
currentMonth=`date +%Y-%m`
rsyncTmp=/tmp/rsync/
rsyncMkdir=${rsyncTmp}mkdir/
rsyncDB=${rsyncTmp}db/
# логин-пароль рута mysql
dbusername=root
dbpassword=mysql_root_password
# rsync не умеет создавать директории. Немного извернёмся.
#
# rsync_mkdir relative/path destinationPath
rsync_mkdir ()
{
mkdir -p ${rsyncMkdir}$1
rsync -v --archive --compress --progress ${rsyncMkdir} $2
rm -R ${rsyncMkdir}
}
# Делаем дамп БД, сжимаем, отсылаем на NAS.
#
# rsync_db dbname destinationPath
rsync_db ()
{
mkdir -p ${rsyncDB}
mysqldump -u $dbusername --password=$dbpassword $1 | gzip -9 > ${rsyncDB}${1}_${currentDate}.sql.gz;
rsync -v --archive --compress --progress --partial ${rsyncDB} $2
rm -R ${rsyncDB}
}
# Отсылаем всю директорию на NAS.
#
# --delete-after --force после завершения копирования удаляет на NAS всё, чего
# больше нет в исходнике.
# --partial позволяет докачивать прерванные загрузки. Полезно, если соединение не очень.
# --compress жать перед отправкой, разжимать на NAS.
# --archive сохраняем атрибуты файлов.
# -v --progress показываем прогресс загрузки и другие сообщения.
#
# rsync_dir sourcePath destinationPath
rsync_dir ()
{
rsync -v --archive --compress --progress --force --partial $1 $2
}
### example.com ###
backupdir=Buh/
backupdirMonth=${backupdir}${currentMonth}/
rsync_mkdir ${backupdirMonth} ${backupServer}
rsync_db example_com1 ${backupServer}/${backupdir}
rsync_db example_com2 ${backupServer}/${backupdir}
rsync_dir /Volumes/PATH/ ${backupServer}/${backupdirMonth}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment