【序】
这是群晖NAS的shell脚本扩展应用之二。之前颁发的文章:手动挂载exfat分区和自动挂载exfat分区,目的就是为了能够在NAS上面,可以做到自动增量备份。
我也安装和试用过群晖官方提供的USB Copy加值套件,可是它只是简单的U盘同步功能。NAS上的备份文件必须连结不变,不然会重复的同步已经备份过的文件。我的主要目的是用来同步相机拍摄的照片和视频,同步完成后其实不是保存在同一个目录下面,往往要依照时间或者事件的类型,放置到其它目录里。如果用USB Copy来备份,就会致使重复同步旧文件的情况产生。于是,自己编写的一个shell脚本,实现真正意义上的“增量备份文件”,即使文件更名或者移到其它目录后,也不会重复备份。
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-1.jpg (12.19 KB, 下载次数: 0)
2018-10-20 12:29 上传
群晖USB增量备份
【备份原理】
我在用shell脚本备份时,会记录每个备份文件的名称和MD5校验值,把这些信息保存在NAS上面。下次备份的时候,检查一下U盘里面的文件跟NAS上的信息是否重复,如果重复就不会再次备份。由此就可以实现增量备份的功能。
文中使用的源代码,在我的GitHub上面都可以找到,有兴趣的朋友可以自己下载看看:
git clone https://github.com/luckylz2git/exfat-synology/usbsync
【测试截图】
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-2.jpg (71.44 KB, 下载次数: 0)
2018-10-20 12:29 上传
插入U盘,打开usbhash.log文件
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-3.jpg (25.98 KB, 下载次数: 0)
2018-10-20 12:29 上传
复制USBHash这行
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-4.jpg (34.89 KB, 下载次数: 0)
2018-10-20 12:29 上传
粘贴到usbsync.cfg,并添加U盘注释
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-5.jpg (33.64 KB, 下载次数: 0)
2018-10-20 12:29 上传
弹出U盘,复制一些文件或者拿去拍一些新的照片
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-6.jpg (34.46 KB, 下载次数: 0)
2018-10-20 12:29 上传
重新将U盘插入NAS,期待完成备份,U盘会自动弹出
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-7.jpg (60.26 KB, 下载次数: 0)
2018-10-20 12:29 上传
备份日志,备份了5个文件
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-8.jpg (57.73 KB, 下载次数: 0)
2018-10-20 12:29 上传
重复在U盘内增加一些文件或照片
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-9.jpg (48.78 KB, 下载次数: 0)
2018-10-20 12:29 上传
U盘插入NAS,备份成功!
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-10.jpg (59.19 KB, 下载次数: 0)
2018-10-20 12:29 上传
再次查看日志,仅备份了新的文件。
「原创」群晖NAS小程序(2)——用shell脚本增量备份U盘和存储卡-11.jpg (105.19 KB, 下载次数: 0)
2018-10-20 12:29 上传
备份历史日志,保存了每次备份的信息。
【免责声明】
这个体例其实不是官方提供的,需要使用到一些简单的Linux命令,不熟悉的话,存在有一定风险。所以,请谨慎测验考试,风险自担!
【安装步调】
(1)登岸NAS界面,在存储空间1增加一个共享文件夹,例如:PhotoImported
(2)用root用户登岸ssh,连上NAS:
(3)确保NAS可以连接互联网,然后用以下命令下载2个文件,usbsync.sh和usbsync.cfg,其中usbsync.sh放到bin目录,usbsync.cfg是设置文件,放在PhotoImported目录,便利修改:
wget -P /tmp/ https://github.com/luckylz2git/exfat-synology/raw/master/usbsync/usbsync.sh –no-check-certificatechmod 755 /tmp/usbsync.shmv /tmp/usbsync.sh /bin/usbsync.shwget -P /tmp/ https://github.com/luckylz2git/exfat-synology/raw/master/usbsync/usbsync.cfg –no-check-certificatechmod 666 /tmp/usbsync.cfgmv /tmp/usbsync.cfg /volume1/PhotoImported/usbsync.cfg
(4)用文本编辑工具打开usbsync.cfg,修改里面相应的参数。
启用/停用自动同步。中括号内为可选参数(下同)。true是启动自动同步,false是停用:
AutoSync:[true | false]
同步完成后,是否自动弹出U盘。true是自动弹出,false是不弹出。
AutoUnmount:[true | false]
需要同步U盘内的源目录:
SourceDir:DCIM
需要同步的文件后缀,如果有多种格式,用分号(;)分隔文件后缀。星号(*)代表同步所有文件:
FileExtension:*orFileExtension:nef;jpg;mov
NAS内的目标备份目录:
ImportDir:/volume1/PhotoImported
注册U盘信息,如果要备份多个U盘或者存储卡,就要填写多行。
USBHash:[usb_hash_value1][,usb_dev_info1]USBHash:[usb_hash_value2][,usb_dev_info2]…USBHash:d1912eac1eb562007524467b58f3423f,EXAMPLE_USB_DEVICE1USBHash:e1912eac1eb752446756200b58f3423f,EXAMPLE_USB_DEVICE2…
注册U盘体例:
把需要备份的U盘插入NAS,打开共享文件夹PhotoImported,里面会有一个usbhash.log文本文件。打开这个文件,内容如下:
USB Disk: /dev/sduDevice: /dev/sdu1USBHash: d1912eac1eb562007524467b58f3423f
只需要把USBHash那行复制到usbsync.cfg文件里面即可。USBHash还有一个额外的usb_dev_info信息,用逗号(,)分隔,这是用来区分USB设备的注释信息,例如:USBDisk,SDCard1,CFCard1。这是一个可选填的内容。
(5)上述步调完成后,弹出并重新插入U盘,就可以开始自动备份了。
(6)多个U盘注册,重复步调(4)和(5)。
(7)确认增量备份结果。打开共享文件夹PhotoImported,查看U盘上的文件是否已经按要求完成备份了。程序在完成备份后,会生成2个日志文件:import_latest.log和import_history.log。最新一次备份的日志,保存在import_latest.log,之前的备份日志,保存在import_history.log。
【卸载步调】
(1)用root用户登岸ssh,连上NAS:
(2)执行以下命令,即可卸载这个小程序,将系统功能回复复兴:
rm -f /bin/usbsync.sh
【总结】
鉴于本人工作性质,所以这篇写得感触感染像技术文档,可能不是那么通俗易懂。不过,循序渐进的操作,应该不会有太大问题的。如有任何问题或建议,欢迎给我回复留言。
【未完待续】
下篇文章,我会介绍最后一个shell脚本小程序exifname。数码相机照片备份的最后一个动作,在自动“增量备份”完成以后,根据照片的信息,自动修改文件名和文件目录。
敬请期待,下回再见!
有兴趣的朋友,请加关注、点赞、转发~
更多内容回复查看:
游客,如果您要查看本帖隐藏内容请回复