diff --git a/backup/README.md b/backup/README.md new file mode 100644 index 0000000..91f78fb --- /dev/null +++ b/backup/README.md @@ -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 +``` + + diff --git a/backup/ftpbackup.list b/backup/ftpbackup.list new file mode 100644 index 0000000..ed004d0 --- /dev/null +++ b/backup/ftpbackup.list @@ -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" +) diff --git a/backup/ftpbackup.sh b/backup/ftpbackup.sh new file mode 100755 index 0000000..a66dddf --- /dev/null +++ b/backup/ftpbackup.sh @@ -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 < done" +