
腰斬Synology Moment變成Photos應該算是DSM7的最大升級,小U之前一直用Synology Drive 的 DS File手機App的相片備份功能做手機備份,但是發現有嚴重設計缺陷。所以趁着DSM7升級就轉到了用Photos來備份。新問題是Photos並不能直接整合DS File的備份,導致全部相片都要從零開始的新來一次,佔用了兩倍的NAS儲存,但是DS File的舊備份不能一鍵刪除(因爲有的舊照片只在DS File的備份裡,手機上已經刪除了)。本文就分享我是如何做備份文件的對比,確保不會誤刪了舊照片。此方法也適合其他的不同地方備份造成重複對比。
閱讀全文: 【DSM7】升級Photos後,刪除舊備份前相片確保有全部備份的方法(不同文件結構的重複文件對比)摘要節點
升級Photos之後的難處
DSM7出來之前,可能大家都是和小U一樣用DS File來備份照片,但是由於DS File有嚴重功能缺失(後面會說)。所以果斷升級到DS Photos來備份,兩者的界面對比如下:


新舊的不兼容處
Synology Photos的目錄是按照年/月來將相片重新分組,這導致同一個文件在手機和DS File的備份目錄結構與Synology Photos的備份結構不一樣:
#手機和DS File的備份的文件目錄結構
.../DCIM/202301010001.jpg
#Photos的文件目錄結構
Photos/.../DCIM/2023/01/202301010001.jpg
雖然文件名一樣,但是文件夾不同,所以不能直接用diff或者Winmerge這樣的工具做對比。
導出所有子目錄的文件名、不需文件夾結構
雖然文件夾不同,但是無論用DS File和DS Photos備份的文件名是不變的(除非你開啓了改文件名功能)。這樣我們就可以通過導出所有子目錄的文件名來做對比,找出新舊備份的異同,新備份差了哪些文件。
但是像 dir /s /b 這樣的命令會輸出整個目錄結構,即使加了 /a-d 也是只顯示文件(忽略文件夾),並不能直接對比
經過幾番搜尋,終於在 Windows Command line: how can I list all files in all folders without the location just a list of files – Stack Overflow 找到了輸出所有子目錄的文件名(忽略文件夾樹狀結構)的方法:
dir *.txt -r | % Name
注意一定要在Powershell (不是CMD)中運行。幸好有Powershell這個新shell功能。
實際操作:比對DS File和DS Photos的備份文件
先把NAS做好Drive Mapping映射,然後
cd #你的舊備份目錄
dir *.txt -r | % Name > D:\Drivefilenames.txt #導出文件名列表到Drivefilenames.txt
cd #你的Photos備份目錄
dir *.txt -r | % Name > D:\Photosfilenames.txt #導出文件名列表到Photosfilenames.txt
檢查導出的txt行數是否正確。

打開Excel / Google Sheet,把txt導入,再用countif 命令找出差別,不詳述了有需要解釋請留言。

DS File / Synology Drive手機備份的問題
DS File內建了一個「照片備份」的功能,小U用他來備份手機裏面的DCIM已經幾年,最近才發現他有個嚴重問題:相同的文件不會忽略,而是會重複備份爲_1.xxx,_2.xxx不斷下去,每次重裝APP,或者在新手機上用DS FILE都有這個問題。
不知道爲什麼Synology沒有把忽略重複File的功能做到DS File上,總之我還要花時間把這些_1.xxx,_2.xxx找出來刪掉,浪費時間。DS MOMENT的話我查了下好像不同版本的MOMENT有的有忽略功能,有的沒有。但DS FILE就一直沒有,不滿!


舊備份要立即刪掉嗎?
爲了保險起見,我把重複的舊備份轉移到了我的新ITX小主機上的DSM:

過多半年沒有發現有問題我就把舊備份刪除掉吧!
DSM內建的重複資料對比和刪除
如果你相信DSM的對比,可以參考:設定重複資料刪除 | DSM – Synology 知識中心
另外可以手動生成重複資料列表,再用命令行方式刪除:在群晖中批量删除重复文件(零基础手把手图文)_NAS存储_什么值得买 (smzdm.com)
但問題是,重複資料列表生成最多5000個,而且不確定他會刪除哪個目錄裡的文件,例如會不會有時候刪除舊備份目錄裡的,有時候刪除新備份目錄裡的?知道的網友請補充一下。