windows下通过7z打包备份文件到Google drive
Google drive客户端设置
设置要备份的目标目录为可离线使用
,这样变动会实时同步,相当于本地挂载
脚本
backup.bat
解释
脚本首先复制了files_dir
,等于创建了一个快照,防止文件的handler被占用。然后使用7z对这个快照压缩打包,打包的目的地还是当前工作目录work_dir
,不直接写到cloud是因为打包过程中可能会产生部分写入。最后将打包完成的文件移动到cloud并且清理中间文件和cloud上的历史备份。
[备注]
set "archive_date=%date:~3,4%%date:~8,2%%date:~11,2%"
%date:~x,y%
- x: char offset
- y: char count
- 通过
echo "%date%"
查看日期格式
xcopy "%files_dir%" "%files_dir%_snapshot" /s/e/i/y/q
xcopy
/i
: 目标文件夹不存在则会创建/s
: 递归(非空文件夹)/e
: 递归(含空文件夹)/s/e
: 通常组合使用
rmdir /s/q "%files_dir%_snapshot"
/s
: 递归/q
: 静默
start /wait "" "C:\Program Files\7-Zip\7z.exe" a -xr!*.log -p"%passwd%" -t7z -mx4 "%work_dir%\archive_%archive_date%.7z" "%files_dir%_snapshot"
start /wait "" "%command%"
start
: 开启一个新的command执行窗口/wait
: 等待执行完成后回到当前流程
"%7z_dir%\7z.exe" a -xr!*.log -p"%passwd%" -t7z -mx4 "%work_dir%\archive_%archive_date%.7z" "%files_dir%_snapshot"
a
: 追加文件到archive-x
: 排除文件r
: 递归!*.log
: wildcard, 还可以使用-xr @files.txt
将排除的文件写到files.txt
(换行分割)-mx4
: 压缩率,越高处理越慢但archive体积越小-p
: archive密码
[参考]