最近因为想要对一个没有数据库的网站目录进行打包备份,发现如果结合Rclone这个“神器”的话,打包备份指定的目录文件夹并上传到各大网盘中将是一件非常容易的事情。除此之外,还可以上传到支持FTP、WebDAV、SFTP、Https等协议的存储中。
主要是用到Linux的两个命令:zip和tar,这两个命令可以实现给指定目录打包。其实,如果不想打包的话我们可以用到SCP和Rsync,这两个命令可以帮助我们快速复制或者同步文件夹到指定目录,特别适合超大量文件或者超大文件的传输备份任务。
这篇文章就来分享一下利用Rclone+Tar或ZIP,实现自动定时打包备份指定目录文件夹并同步备份到各大网盘。
一、Tar压缩打包和解压
1.1 打包解压
打包命令如下(提前在根目录创建好/backup):
tar -czvf /backup/backup$(date +%Y%m%d%H%M).tar.gz /opt
以上命令是将文件夹/opt下所有的文件及子文件夹打包到/backup目录下,并以时间来命名。
解压命令如下:
tar zxvf /backup/backup20200925.tar.gz -C /opt
以上命令是将压缩包解压到/opt目录下。
1.2 加密压缩
加密压缩如下:
tar zcvf – /opt | openssl des3 -salt -k ‘123456’ -out /backup/backup$(date +%Y%m%d%H%M).tar.gz
以上命令是将文件夹/opt下所有的文件及子文件夹打包到/backup目录下,设置了加密密码“123456”,并以时间来命名。
加密解压如下:
openssl des3 -d -k ‘123456’ -salt -in /backup/backup20200925.tar.gz | tar zxvf – -C /opt
以上命令是将压缩包解压到/opt目录下,请替换你的密码。
二、ZIP压缩打包和解压
2.1 打包解压
打包命令如下(提前在根目录创建好/backup):
zip -q -r /backup/backup$(date +%Y%m%d%H%M).zip /opt
以上命令是将文件夹/opt下所有的文件及子文件夹打包到/backup目录下,并以时间来命名。
解压命令如下:
unzip /backup/backup20200925.zip -d /opt
以上命令是将压缩包解压到/opt目录下。
2.2 加密压缩
加密压缩如下:
zip -q -r -P’wzfou123′ /backup/backup$(date +%Y%m%d%H%M).zip /opt
以上命令是将文件夹/opt下所有的文件及子文件夹打包到/backup目录下,设置了加密密码“123456”,并以时间来命名。
加密解压如下:
unzip -P’wzfou123′ /backup/backup20200925.zip -d /opt
以上命令是将压缩包解压到/opt目录下,请替换你的密码
三、Rclone命令安装配置
rclone 是一个命令行工具,用于 Google Drive 的上传下载等操作。官网网站:https://rclone.org/
你可以用以下的命令来安装 rclone,以 RedHat 系举例,记得要先安装 unzip 命令。
yum -y install unzip && wget -qO- https://rclone.org/install.sh | bash
然后,运行以下命令开始配置:
rclone config
输入:n和设置一个名称。
然后选择你要备份的网盘,这里以谷歌网盘为演示,id和Secret都不用填写,直接回车。
然后输入:1,赋予rclone操作云盘可读可写的权限,folder_id和account_file都直接回车,不用填写。
当设置到 Use auto config? 是否使用自动配置,选 n 不自动配置。然后根据提示用浏览器打开 rclone 给出的 URL,点击接受(Accept)。
然后将浏览器上显示出来的字符串粘贴回命令行里,完成授权,然后退出即可。
四、自动定时打包备份
在本地根目录下新建cmd目录,然后cd cmd,新建一个sh文件。
vim vpsback.sh
复制以下命令:
#!/bin/bash /usr/bin/zip -q -r /backup/backup$(date +%Y%m%d%H%M).zip /bw-data /usr/bin/rclone copy –update –verbose –transfers 30 –checkers 8 –contimeout 60s –timeout 300s –retries 3 –low-level-retries 10 –stats 1s “/backup” “wzfoumi:wzfoumima” echo “BACKUP DATE:” $(date +”%Y-%m-%d %H:%M:%S”) >> /var/log/backup.log
说明:
第一句是将/bw-data打包到指定目录下。
第二句是利用rclone copy命令,将指定目录下新增加的文件,同步到Google网盘中,”wzfoumi:wzfoumima”是指名称为wzfoumi的rclone,wzfoumima是谷歌网盘中的文件夹。
第三句是输入日志,即表示执行了一次备份命令。
赋予执行权限:
chmod +x vpsback.sh
先测试一下从是否可以正确运行:
我们可以看到本地文件夹已经有打包过来的文件。
同时,可以看到网盘中已经有了同步过来的文件了。
添加定时任务,让脚本每天执行一次,更多的关于定时任务设置方法:Linux Crontab命令定时任务基本语法与操作教程。
五、自动删除旧备份及同步
以下命令是删除/backup文件夹下30天以前的备份文件:
find /backup -mtime +30 -name “*.zip” -exec rm -rf {} \;
5.1 sync同步备份
本步骤主要是利用的rclone sync命令,将本地目录与网盘的文件夹保持一致。注意rclone sync是双向操作,即两边的操作都会对双方产生影响,请谨慎使用。命令如下:
#!/bin/bash /usr/bin/zip -q -r /backup/backup$(date +%Y%m%d%H%M).zip /bw-data /usr/bin/rclone sync -i /backup wzfoumi:wzfoumima –progress /usr/bin/find /backup -mtime +30 -name “*.zip” -exec rm -rf {} \; echo “BACKUP DATE:” $(date +”%Y-%m-%d %H:%M:%S”) >> /var/log/backup.log
六、总结
总得来说,tar 压缩率比 zip 高,但是如果加密后,tar 加密的文件会比 zip加密后的文件大,所以请根据你自己的需要来选择。另外,如果VPS备份使用定时任务不执行的话,请注意查看一下路径是不是有错误,同时设置一下环境变量等。