Linux定时自动备份数据到 OneDrive/Google Drive
实现效果是每晚三点自动备份数据库和网站等数据并使用 Openssl 加密归档,保留最近一个月的数据,通过开源的 rclone 工具同步到 Google Drive 和 OneDrive 上,这样就万无一失了 1. Shell 脚本 脚本是自己使用,因此比较简单。 #!/bin/bash DATE=`date +%Y%m%d` BACKUP_TEMP_PATH=/backup/tmp # Database DB_NAME= DB_USR= DB_PW= DB_OUT_NAME="db_$DATE" # Website WEB_PATH= WEB_OUT_NAME="web_$DATE" # Archive ARCHIVE_PATH=/backup/archives ARCHIVE_LOG_FILE=/backup/log/backup.log # Backup mysql # mysqldump -u$DB_USR -p$DB_PW --databases $DB_NAME > $BACKUP_TEMP_PATH/$DB_OUT_NAME.sql mysqldump --login-path=$DB_USR --databases $DB_NAME > $BACKUP_TEMP_PATH/$DB_OUT_NAME.sql # Backup webdsite cd $WEB_PATH zip -rq $BACKUP_TEMP_PATH/$WEB_OUT_NAME.zip * # Archive files cd $BACKUP_TEMP_PATH # tar cf - * | openssl enc -e -aes-128-cbc -pbkdf2 -k [password] -out $ARCHIVE_PATH/$DATE.tar.aes tar cf - * | gpg -e -r [recipient] -o $ARCHIVE_PATH/$DATE.tar.gpg # Backup the latest 30 days rm $BACKUP_TEMP_PATH/* find $ARCHIVE_PATH -name "*.tar.gpg" -type f -mtime +30 -exec rm {} \; # Sync to Google Drive rclone sync $ARCHIVE_PATH gdrive:[sync path] # Sync to Microsoft OneDrive rclone sync $ARCHIVE_PATH onedrive:[sync path] # Output log file echo -e "\e[1;32m---------------------------------------------\e[0m" >> $ARCHIVE_LOG_FILE echo -e "Backup date: "$(date +%Y-%m-%d)"\t""Finish time: "$(date +%H:%M:%S) >> $ARCHIVE_LOG_FILE echo -e "\e[1;32m---------------------------------------------\e[0m\n" >> $ARCHIVE_LOG_FILE 这里说明一下,使用mysqldump备份的时候,如果通过账号密码导出会提示使用明文密码不安全的警告,虽然不影响使用,但看着就不爽,因此改用了 MySQL5.7 之后提供的新方式,通过 --login-path= 的方式登录数据库,首先保存一个加密验证信息: mysql_config_editor set --login-path=[name] --host=localhost --user=[usr] --password 查看所设置的信息: mysql_config_editor print --all 删除指定信息: mysql_config_editor remove --login-path=[usr] 值得一提的,我第一次设置的时候毫无疑问的失败了- -,一直无法登录,后来才知道所设置的用户密码中不能包括”#“符号,不然就会报错。 2. 配置 rclone 官方有一键安装脚本,适用于 Linux/macOS/BSD 系统: curl https://rclone.org/install.sh | sudo bash 之后需要在服务器上配置 Google Dirve 和 OneDrive 的连接,输入 rclone config 命令,根据提示的信息进行操作,下面演示的版本为 v1.57.0,不同版本可能会略有出入,但思路是一样的。 Google Drive - using defaults No remotes found - make a new one n) New remote s) Set configuration password q) Quit config n/s/q> n # 输入 n,新建远程连接 name> gdrive # 输入自定义名称,用于区分不同连接 Option Storage. Type of storage to configure. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value. 1 / 1Fichier \ "fichier" 2 / Alias for an existing remote \ "alias" 3 / Amazon Drive \ "amazon cloud drive" 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS \ "s3" 5 / Backblaze B2 \ "b2" 6 / Better checksums for other remotes \ "hasher" 7 / Box \ "box" 8 / Cache a remote \ "cache" 9 / Citrix Sharefile \ "sharefile" 10 / Compress a remote \ "compress" 11 / Dropbox \ "dropbox" 12 / Encrypt/Decrypt a remote \ "crypt" 13 / Enterprise File Fabric \ "filefabric" 14 / FTP Connection \ "ftp" 15 / Google Cloud Storage (this is not Google Drive) \ "google cloud storage" 16 / Google Drive \ "drive" 17 / Google Photos \ "google photos" 18 / Hadoop distributed file system \ "hdfs" 19 / Hubic \ "hubic" 20 / In memory object storage system. \ "memory"...