add backup

This commit is contained in:
tianyu 2016-11-12 16:27:50 +08:00
parent 4817808e5e
commit 70c0ffd66d
3 changed files with 122 additions and 0 deletions

18
backup/README.md Normal file
View File

@ -0,0 +1,18 @@
# online.net ftp 备份脚本
## 配置
修改 `/root/bin/ftpbackup.sh` 中的 `SERVER` 为账户下的 `FTP server``BACKUP_DIR` 为备份文件临时目录。
修改 `/root/bin/ftpbackup.list` 文件,`files` 为要上传的文件,`dirs` 为要备份的目录。
## 运行
`cron` 定时任务
```
5 1 * * * /root/bin/ftpbackup.sh >> /var/log/ftpbackup.log 2>&1
```

15
backup/ftpbackup.list Normal file
View File

@ -0,0 +1,15 @@
files=(
"/root/bin/ftpbackup.list"
"/root/bin/ftpbackup.sh"
"/home/libvirt/images/www.img"
"/home/libvirt/images/builder.img"
"/home/libvirt/images/redhat7.img"
"/home/libvirt/images/ubuntu.img"
)
dirs=(
"root"
"etc"
"var"
"usr"
)

89
backup/ftpbackup.sh Executable file
View File

@ -0,0 +1,89 @@
#!/bin/bash
SERVER="dedibackup-dc2.online.net"
LIST_FILE="/root/bin/ftpbackup.list"
LOG_FILE="/var/log/ftpbackup.log"
BACKUP_DIR="/home/backups"
USER="auto"
PASS=""
if [ -f "$LIST_FILE" ];then
source "$LIST_FILE"
else
echo "file list not exist."
exit -1
fi
if [ ! -d "$BACKUP_DIR" ];then
mkdir "$BACKUP_DIR"
fi
#for file in "${files[@]}"
#do
# if [[ "$file" == *.img ]];then
# echo "$(date) --> shrink: $file" >> "$LOG_FILE"
# qemu-img convert -O qcow2 "$file" "$file.qcow2"
# fi
#done
for dir in "${dirs[@]}"
do
if [ -f "$BACKUP_DIR/$dir.tar.gz" ];then
rm "$BACKUP_DIR/$dir.tar.gz"
fi
tar czf "$BACKUP_DIR/$dir.tar.gz" -C / "$dir"
done
ftp_mkdir() {
local r
local a
r="$@"
while [[ "$r" != "$a" ]] ; do
a=${r%%/*}
if [ -n "$a" ];then
echo "mkdir $a"
echo "cd $a"
fi
r=${r#*/}
done
}
ftp_put() {
echo "cd /"
ftp_mkdir "$BACKUP_DIR"
echo "lcd $BACKUP_DIR"
for dir in "${dirs[@]}"
do
echo "$(date) --> backup: $dir" >> "$LOG_FILE"
echo "put $dir.tar.gz"
done
for file in "${files[@]}"
do
echo "$(date) --> backup: $file" >> "$LOG_FILE"
LCD="$(dirname $file)"
FILE="$(basename $file)"
echo "cd /"
ftp_mkdir "$LCD"
echo "lcd $LCD"
# if [[ "$file" == *.img ]];then
# echo "put $FILE.qcow2"
# else
echo "put $FILE"
# fi
done
}
ftp -p -n $SERVER <<END_FTP
quote user "$USER"
quote pass "$PASS"
binary
$(ftp_put)
quit
END_FTP
echo "$(date) --> done"