1 序言
我日常使用的操作系統包括 windows, mac, iOS, Android,這些操作系統支持的網絡文件共享協議以及文件系統各有差異。
並且我需要在平板上在線觀看電腦上的視頻,iOS Android 系統上的播放器對不同的傳輸協議的支持也各有不同。
原來使用 windows 文件共享在局域網共享文件,移動硬盤拷貝文件已經沒法滿足需求了。我整理了下各種常見的文件傳輸協議以及軟件,針對不同場景給出了最優的方案。
2 結論
如果不想閱讀各種技術的詳細解析,直接看針對不同場景的最優選擇就行了。
2.1 傳輸單個文件(push模型)
微信,企業微信,AirDrop(只支持 mac + iOS)
2.2 備份數據
⚠️ 警告:單向同步(鏡像)功能不能用來做單版本備份,會有嚴重的數據丟失風險,具體看文末的附錄。
建議用移動硬盤備份數據。
如果需要保留多個歷史版本:windows 自帶的"文件歷史記錄"。
如果不需要保留歷史版本:
FreeFileSync
,並且要做自定義配置,具體看文末的附錄。
如果備份的數據想要加密:建議直接用 BitLocker 把整個移動硬盤加密了。不要使用備份軟件提供的加密功能,因為到時候如果備份軟件強制收費了,可能解不開。
注意 BitLocker 只有專業版和企業版的 windows 才能用,家庭版沒有這個功能。
2.3 windows 和 macOS 之間共享文件(poll模型)
不管是給別人的電腦共享文件,還是自己的電腦之間共享文件,都可以用下面的方案。
SMB 和 sftp 都使用操作系統的用戶,所以只要給自己和別人分別創建一個讀取共享文件用的用戶,然后分別授予不同的文件訪問權限就行了。
2.3.1 ⭐️ 推薦: SMB
SMB: Server Message Block,也就是 windows 自帶的文件共享。macOS 下面的實現叫做 samba。
windows 和 macOS 都內置的這個軟件,不用安裝什么。
2.3.2 備用: sftp
如果遇到 macOS samba 和 windows 的 smb 不兼容的情況,選擇 sftp 方案。
windows client 端:
Bitvise SSH Client
圖形界面,支持高分屏。
windows server 端:
bitvise ssh server
圖形界面配置,非常好用
mac client 端:
Cyberduck
免費,圖形界面軟件,完美支持高分屏。
mac server 端: 系統自帶的 sftp 服務器功能。
不過需要注意這個會把磁盤上的所有文件都共享出去,不安全。需要自己修改配置文件來限制共享的目錄。
2.4 windows 共享視頻給平板和手機看(poll模型)
還是使用 SMB,也就是 windows 自帶的文件共享。
windows: 使用系統自帶的共享功能。
iOS: nplayer
Android:
Cx File Explorer 打開視頻文件,在彈出的菜單中選擇用 mx player 播放。
2.5 不同的設備之間做文件的鏡像或者雙向同步
如果不需要增量網絡同步:
(1)
FreeFileSync + smb 網絡驅動器
(2)
FreeFileSync + sftp 服務器
如果需要增量網絡同步:
3 完整方案一覽
按照工作模型區分:
(1) push模型
發送者決定接收者能獲取哪些數據,並且手動發送文件給接收者。
(2) poll模型
發送者開啟文件共享,接收者自行決定從發送者獲取哪些數據。
按照目的區分:
(1) 手動拷貝數據
(2) 備份
備份的數據需要能回到一個歷史版本,所以需要做版本管理。因此比手動拷貝數據復雜很多,一般需要借助一些軟件來實現。
(3) 單向同步(鏡像)
把A電腦的數據拷貝到B電腦,丟棄B電腦的修改。
鏡像也可以叫做單向同步。
(4) 雙向同步
A和B電腦都有數據修改,需要保留兩邊的修改。注意支持雙向同步的軟件,一般也支持單向同步。
按照傳輸介質區分:
(1) 使用 TCP/IP 網絡
(2) 存儲介質直連
下面不好用,不穩定,跨平台太差的方案,用
刪除線標記。
4 工作模型
4.1 poll模型 - 通用文件傳輸協議
(1) Server Message Block(windows自帶的文件共享)
如果可能的話,就用這個協議。windows對它的支持是完美的,特別好用。
(2) sftp
沒有smb的話,就用這個好了,也挺好用的。
(3) http
這個沒有標准的展示目錄,文件屬性的方法。不過對於流媒體文件共享來說,非常夠用了。mx player 老版本只支持 http 協議的網絡串流。
(4)
apple filing protocol
這個是蘋果私有的協議,而且好像蘋果自己都不用了。
(5)
nfs
只有 unix 操作系統原生支持。
macOS 的開發者文檔中說這個協議是不安全的。
(6)
webdav
這個協議和它的實現有一堆的坑,一般情況下使用 sftp 是更好的選擇。
下面簡單介紹下不同協議常用的軟件
4.1.1 Server Message Block
Android
2021-05-06 推薦使用的 Android smb 軟件(我自己試過了):
- Cx File Explorer 界面還不錯,對 smb 支持也挺完美的。
2021-05-06 不推薦使用的 Android smb 軟件(我自己測試過)
- ES 文件瀏覽器。 沒法正常瀏覽 win10 smb 共享出來的文件,直接打不開。廣告超級多,而且是那種彈出式的廣告。有很多沒有用的垃圾功能,軟件非常臃腫。有常駐后台的垃圾服務。有垃圾通知。
- mx player pro 1.35.8 印象中拖動一部分視頻文件的時候,會有卡頓的問題。而且只使用這個軟件的時候,沒法加載字幕。
2021-05-06 不推薦使用的 Android smb 軟件(沒測試過)
- X-plore File Manager 看 google play 上軟件界面的截圖,還是 Android 4.0 的界面風格。
參考資料:
- TUTORIAL: SAMBA on Android, connection with Windows and alternatives | AndroidPCtv 這篇2018年的文章,寫了 Android 軟件對 smb 協議的支持情況,里面也推薦了一些軟件,文章質量不錯
- TUTORIAL: Connect an Android device with your PC through SAMBA | AndroidPCtv 下面這個文章也可以看看,是設置教程,不過用處不大
Mac & iOS
4.1.2 sftp
windows server 端
(1) ⭐️
bitvise ssh server
圖形界面配置,非常好用
windows client 端
(1) ⭐️
Bitvise SSH Client
圖形界面,支持高分屏。
(2) 😂
Cyberduck
windows 版本不支持高分屏。
mac client 端
(1) ⭐️
Cyberduck
免費,圖形界面軟件,完美支持高分屏。
4.1.3 http server
(1) nginx
全平台
(2) KODExplorer
php寫的,全平台
介紹 看過去功能很強大的樣子
(3)
HTTP File Server
windows,功能比較簡潔,支持 Virtual File System
介紹
經過測試,在windows用這個東西搭建了一個 http server,然后共享視頻給mac,mac下面不管是 iina 還是 vlc 都沒法做流媒體播放。windows上面倒是可以使用 potplayer 播放 localhost 共享出來的視頻。估計是 http 協議實現不規范或者不完整導致的。mac 使用 nginx 共享給 windows 上的 potplayer 沒有問題。
試了下關閉 Prevent Leeching, Stop Spiders 選項,mac 上面iina依然沒法正常播放,看了下是網卡沒有在發送數據,估計是這個軟件不支持 http range request。
(4) IIS - windows
4.1.4 webdav server
(1) nginx
全平台
(2) macOS Server
mac 專用,支持很多很多功能
(3) IIS - windows
webdav 的坑
- 協議本身不是一個文件訪問協議。上傳下載的時候會丟失時間戳。文件屬性查看功能不完整
- nginx 上傳文件的時候有奇怪的緩存。nginx上傳文件大小好像有奇怪的限制
- IIS 上傳文件大小有奇怪的限制。
- 各種實現程序都有很多奇怪的限制
- windows 下沒有好用的 webdav client。
4.2 poll模型 - 多媒體專用
建議不要選擇下面的協議,非常坑:
- 這種協議對於文件類型的限制很多,可能明明是一個多媒體文件,但是這個協議支持不了,就沒法傳輸了。
- 可能莫名其妙做了一些視頻音頻轉碼的操作,非常浪費cpu資源。然而實際上手機平板電視安裝app之后能直接播放沒有轉碼的視頻,這個操作毫無意義。
- 很多協議本身或者軟件的實現不支持字幕。
具體的協議列表:
- DLNA
- mms
- rtsp
4.3 poll模型 - 歷史遺留協議,不要使用
- ftp
- ftps
ftp 軟件:
(1)
Star FTP Server windows專用
4.4 push模型 - 依賴互聯網
依賴互聯網上的中心化的服務器(其中很多軟件會針對局域網做優化。但是因為局域網環境比較復雜,軟件的實現不一定足夠完善,經常會發生莫名其妙數據就到公網傳輸的問題。)
- 企業微信
- 其它通過雲服務器轉發的坑爹方案
- Send Anywhere 官方文檔說是加密傳輸的。這個東西依賴中心服務器獲取和解析transfer key。傳輸的文件本身可以不經過中央服務器;如果在不能ip到ip直連的網絡上傳輸數據,需要經過中央服務器中轉。結果就是,如果發送小文件,創建和驗證transfer key非常慢,花費了大量的時間;如果在局域網內因為某些原因,兩台主機之間不能互相發現,最后傳輸文件會走因特網,最后還是非常非常慢。
- Droplr
- JumpShare
- WeTransfer
- TransferXL
- Infinit 根據官網,2017-03-31 開始就停止服務,軟件不可用
4.5 push模型 - 局域網
勉強還行
下面的方案有不穩定,速度慢,支持的操作系統少,不可用,沒有加密等問題
- AirDrop 非常不穩定,只支持 mac 和 iOS
- 藍牙 非常慢
- 飛鴿傳書 聊天工具
- 飛秋 聊天工具
- EaseUS Todo PCTrans 看過去是局域網傳輸解決方案,但是只支持windows
- Fast File Transfer 這個是一個Android軟件
5 按照目的區分
手動拷貝文件沒什么好說的。
5.1 備份+同步
⚠️ 警告:單向同步(鏡像)功能不能用來做單版本備份,會有嚴重的數據丟失風險,具體看文末的附錄。
5.1.1 測試過發現值得推薦的方案
(1) ⭐️
FileGee
- 同步功能的話,和 FreeFileSync 差不多。具體看下面的附錄。
- 備份功能的話,看你喜歡 windows file history 的簡潔,還是這個軟件的強大自定義能力。
功能強大,界面簡潔,高性能。可以在后台自動備份,可以在移動硬盤插入的時候自動備份。免費版限制只能創建8個任務,但是因為可以創建多文件夾的備份任務,約等於沒有限制。付費版本支
持卷影復制。
不建議使用的功能:
不建議使用它的加密功能。之前用過這個軟件,明明是一個單機軟件,居然彈出了“當前版本號的個人版已經停用,請上網免費激活或者下載最新版本使用”。那可能哪天開發商跑路,或者軟件強制收費,原來用這個軟件加密備份的數據就沒法恢復了。雖然官方提供了《
獨立的文件加密解密程序》,但是這個工具需要使用安裝包安裝軟件之后才能使用,而且不知道這個獨立工具有沒有檢測到新版本之后,禁止使用舊版本的邏輯。
增量備份功能使用注意事項:
官方提供一個《
獨立的增量備份恢復程序》,但是需要導出的日志文件才能工作,並且默認配置下日志只會保存在本地計算機,需要按照《
日志導出子窗口》里面配置成同步完成之后自動導出日志到備份文件所在的磁盤。
注意:如果不配置,在本地計算機的C盤數據消失之后(比如重裝或者C盤所在的磁盤物理損壞),沒法方便地從增量備份恢復數據,你只能自己人肉從 n 多個版本的支離破碎的文件夾中找到需要的數據。
以及,還是不知道這個獨立工具有沒有檢測到新版本之后,禁止使用舊版本的邏輯。
5.2 備份
⚠️ 警告:單向同步(鏡像)功能不能用來做單版本備份,會有嚴重的數據丟失風險,具體看文末的附錄。
5.2.1 測試過發現值得推薦的方案
(1) ⭐️ Windows File History (文件歷史記錄)
Windows 8 開始自帶的軟件。Windows 10 開始可以靈活選擇備份和排除的文件夾。
重裝或者換了電腦之后從文件歷史記錄里面還原文件的教程:
How to correctly use File History to transfer data files to a new Windows 10 installation
優點
1. 性能非常好。
2. ⭐️ 能在移動硬盤插入后自動備份。在移動硬盤斷開連接的時候可以做本地緩存,等移動硬盤插上之后把本地緩存的內容拷貝到移動硬盤。如果本地緩存滿了,Windows 會提示你需要插入移動硬盤了。這個功能是許多其他備份軟件不具備的,堪稱碾壓級優勢。
3. 完全后台備份,不會打擾你,你只需要定期不定期插上移動硬盤就好了。
2. ⭐️ 能在移動硬盤插入后自動備份。在移動硬盤斷開連接的時候可以做本地緩存,等移動硬盤插上之后把本地緩存的內容拷貝到移動硬盤。如果本地緩存滿了,Windows 會提示你需要插入移動硬盤了。這個功能是許多其他備份軟件不具備的,堪稱碾壓級優勢。
3. 完全后台備份,不會打擾你,你只需要定期不定期插上移動硬盤就好了。
缺點:
1. Windows 10 開始,會自動把 "C:\Users\{你的用戶名}\" 這個目錄下面新建的文件夾添加到備份列表中。這會導致很多沒有的垃圾文件也被備份走。
解決方案:創建一個 "C:\{你的用戶名}\" 的文件夾,然后把你的各種文件塞到這里,避免它們莫名其妙被備份走了。但是有些程序自動創建的文件夾還是會被莫名其妙備份走。
解決方案:創建一個 "C:\{你的用戶名}\" 的文件夾,然后把你的各種文件塞到這里,避免它們莫名其妙被備份走了。但是有些程序自動創建的文件夾還是會被莫名其妙備份走。
功能:備份windows和軟件設置。
我只備份過,沒有還原過,所以不知道它是不是和它說的一樣有用。
我現在重裝系統之后都是手動重新配置一遍所有軟件,所以已經用不上這個東西了。而且很多時候新版本的軟件和老版本的軟件的設置是不兼容的,強制導入可能導致問題。
5.2.2 沒有測試過的方案,先記錄下
(1)
SnapRAID
SnapRAID is a backup program for disk arrays. It stores parity information of your data and it recovers from up to six disk failures.
看官網的介紹,似乎很適合用了做 RAID 磁盤陣列的備份。
(2)
Bacula
一個企業級備份軟件。
(3)
bup / bup
Very efficient backup system based on the git packfile format, providing fast incremental saves and global deduplication (among and within files, including virtual machine images).
(4)
duplicacy
Duplicacy backs up your files to many cloud storages with client-side encryption and the highest level of deduplication。
看介紹不錯的樣子
5.2.3 建議不要使用的方案
(1)
FBackup
排除的原因:
1. 上次看的時候,這個軟件不支持增量備份。
2. ⚠️ 而且在鏡像備份的時候,如果源分區不可用,它會直接刪除掉目標分區下的備份數據 (不知道現在修復了沒有): 《
UGH! Mirror backup deletes backup if source drive failed》
(2)
rdiff-backup
排除的原因:這個是命令行工具
(3)
areca backup
優點:
1. 功能比較強大
2. 可以靈活選擇備份目標
排除的原因:
1. 不能在移動硬盤插入后自動備份
2. 性能稀爛。特別是增量備份,性能特別爛。它需要先把目標目錄傳輸到C盤下的一個臨時目錄,然后將臨時目錄中的內容與源目錄中的內容比較,然后重新將源目錄中的數據寫入目標目錄下面。
3. 卷影復制的支持需要付費的第三方插件。
Boar aims to be the perfect way to make sure your most important digital information, like pictures, movies and documents, are stored safely.
排除的原因:這個是命令行工具
5.3 單向同步(鏡像)
⚠️ 警告:單向同步(鏡像)功能不能用來做單版本備份,會有嚴重的數據丟失風險,具體看文末的附錄。
下面介紹的方案都不依賴中心化服務器。
(1) rsync
支持增量同步。
缺點:
1. 需要服務端和客戶端都安裝 rsync,不然沒法工作。
2. 這東西是一個命令行軟件,我沒有找到 windows 下面免費好用的圖形界面工具。
下面是我找到的一些圖形界面的工具。
rsyncOSX/RsyncOSX mac。A macOS GUI for rsync。界面過於復雜,令人窒息。然后網上有人(2018-06左右)說這個東西有挺多問題的。
⭐️
Acrosync windows+linux+mac。商業的rsync client,收費。
Truck.app mac。界面挺簡潔的
qtdSync windows+mac。這個東西的設計目標是做一個備份軟件,沒有看到同步相關的選項。也可能是埋得太深了。
ChronoSync mac。商業軟件,收費
luckyBackup unix+windows(不完整支持)。它的設計定位是備份而不是同步。
DeltaCopy 基於rsync做的一個備份工具。
(2) axkibe/lsyncd
監控文件系統,實現定期調度rsync來同步數據
5.4 單向同步+雙向同步
警告:單向同步(鏡像)功能不能用來做單版本備份,會有嚴重的數據丟失風險,具體看文末的附錄。
5.4.1 數據會不可控地傳輸到互聯網上
依賴互聯網上的中心化服務器存放文件
- ⭐️ 堅果雲
- Dropbox
- OneDrive
不需要中心化服務器,但是還是會把數據在互聯網上傳輸
- resilio sync 據說這個的性能比 syncthing 好
- syncthing 開源的實現
5.4.2 可以純粹在本地或者局域網執行
下面的服務如果搭建了 sftp 服務器,其實也是可以在互聯網上傳輸的。但是它們需要你自己手動設置成在互聯網上傳輸,比上面自動莫名其妙就傳輸到互聯網上的方案安全的多。
(1)
FreeFileSync
網絡同步只支持sftp/ftp。沒有增量同步功能。相比 rsync 的主要優點是方便好用,有人性化的圖形界面。
排除的原因:沒有 atomic mirror。雖然可以手動寫 script 來支持。
設置教程
(2)
GoodSync
windows mac linux Android iOS NAS。
免費用戶最多3個任務,100個文件。
購買頁面: 每年 $22.45 ≈ 141.9985人民幣
能做 Block Level 增量同步,非常強大。
(3)
AllwaySync
只支持windows和mac。個人用戶每30天能同步最多 40000 個文件。其實約等於沒有限制。
這個軟件雖然支持 HiDPI,但是界面是真的難看,還是 Windows XP 時代的風格。
排除的原因:相比 FreeFileSync 多支持一堆的雲廠商,以及 WebDav 協議。其他界面,設置菜單,易用性都比不上 FreeFileSync,基本上能用 FreeFileSync 就不用考慮這個軟件了。
(4)
自同步
windows mac。中國人做的軟件,看過去是免費的而且沒有什么限制。看官網介紹,沒有本地硬盤同步的功能。
(5)
Microsoft SyncToy
wikipedia:
https://en.wikipedia.org/wiki/SyncToy
只能在windows上用。
在 2009-11-10 發布了 SyncToy 2.1,然后就沒有新版本了。2021-01 微軟關閉了 SyncToy 的下載通道,不過可以從第三方網站下載到。
排除的原因:測試發現這個軟件還不錯,不過沒有 FreeFileSync 好。具體看附錄。
(6)
Synkron
圖形界面還不錯,不過文檔中沒有提及增量同步,那應該就是沒有增量同步功能了。
排除的原因:這個軟件
在 2011-01-26 最后一次 release 了 1.6.2,太老了,應該不支持高分屏。
(7)
DirSync Pro
沒有網絡增量同步的功能。
排除的原因:性能和界面設計,功能都比 FreeFileSync 垃圾得多。具體看附錄。
(8) Unison File Synchronizer
這個東西總體上還不錯,注意client和server的版本號必須是一致的。有增量網絡同步功能
(9)
Syncovery
功能強大,支持 Block Level Sync。不過設置太多,而且沒法調整模板,導致有些不好用,具體看附錄。
價格:
- 功能被嚴重閹割的 "Standard Edition": 34.9美元=220.746人民幣
- 功能被閹割了一小部分的 "Professional Edition": 59.9美元=378.8735人民幣
- 功能完整版本 "Premium Edition": 99.9美元=631.8775人民幣
5.4.3 參考資料
- 四款免費實用的局域網文件同步軟件評測
- Comparison of file synchronization software - Wikipeida
- Best File Sync Software in 2022 - Reviews | GoodFirms
6 傳輸介質
6.1 通過線纜直連,組建只有兩台電腦的計算機網絡
6.2 存儲器直連,不使用 TCP/IP 網絡
- U盤和移動硬盤
- Mac下可以使用firewire線直連兩台電腦,把一台電腦上的硬盤連接到另外一台電腦上來訪問。具體看這里的method 2。這里要使用Target Disk Mode,也就是把一台電腦上的硬盤直接掛載到另外一台電腦上。
- USB Type C - USB Type C 直連。mac可以使用Target Disk Mode。
- 把硬盤拆下,使用sata線之類的數據線直連到主機上。
6.3 參考資料
- How to Connect Two Computers Using USB
- How to Transfer Files Between Laptops
- How to Transfer Files Between Two Macs
- Is it possible to connect 2 computers with a USB cable?
- Transfer data between two Mac via USB-C
- Comparison of file transfer protocols - Wikipedia
- List of file systems - Wikipedia
7 附錄 - 單向同步安全性測試
7.1 背景
根據我對一堆同步軟件的測試結果,它們都會先移除掉目標目錄下的文件,然后才是把新的文件拷貝過去。如果你移動了一堆的文件,會導致在同步的過程中,目標目錄下面的文件不完整,此時如果源目錄所在的硬盤發生故障,所有數據都會丟失。
因為經常把單向同步用作備份用途,所以為了數據安全,一款軟件需要支持下面兩個功能:
1. 支持 long path。
windows 專有概念,也就是 path > 260 characters。mac 和 linux 上的程序肯定支持 long path。
如果一個 mirror 程序不支持 long path。那么很可能會弄丟一部分文件。可以直接一鍵排除了。
2. 支持 atomic mirror。
也就是說要么鏡像成功,整個目錄結構變成新版本,要么鏡像失敗,整個目錄結構 rollback 成老版本。
在把鏡像功能作為備份的手段使用的時候,不支持 atomic mirror 會導致 mirror 進行的時候,文件副本數量 - 1 = 1,這是絕對不能接受的。這個還是一票否決。
atomic mirror 方案:
1. 直接使用文件系統提供的功能。
備份的目標是移動硬盤,所以要求移動硬盤上的文件系統支持對應的功能。
微軟官方不支持在 removable media 上使用 ReFS。其他 fat16, fat32, exfat, 光驅文件系統, 各種虛擬文件系統,各種第三方驅動支持的文件系統都很弱,根本不可能有下面的豪華功能
=> 只有 NTFS 可以考慮
=> 如果 NTFS 不支持需要的特性,移動硬盤上就沒法用上這個特性了。
=> 就不用考慮這個方案了
ReFS | NTFS | 備注 | |
File-Level snapshots | ✓ | ✗ | |
Volume snapshots (Volume Shadow Copy) | ✓ | ✓ | 只能按照整個分區做 snapshot。那這樣 rollback 怎么搞,只能手動拷貝文件來 rollback? 以及這個功能其實還是要軟件支持,不可能自己手動調用。 Shadow Copy Volume Shadow Copy Service Volume Shadow Copy Service Volume Shadow Copy Service Overview |
Transactions | ✗ | ✓ | 這個是一個文件系統的大鎖,復制大量文件的時候,應該會導致整個文件系統卡死。所以不行。 |
2. 軟件自己做 atomic 處理。
具體看下面的 《測試結果匯總》
7.2 測試結果匯總
測試日期:2022-02-19
所有軟件都是截止這個日期的最新 windows 版本。
軟件 | long path | atomic mirror | mirror 的執行順序 |
FreeFileSync 11.17 | ✓ | 🤔 需要手動模擬 設置教程 |
先刪除老文件,然后創建新文件 |
AllwaySync 21.1.5 | ✓ | ✗ | 先刪除老文件,然后創建新文件 |
Microsoft SyncToy 2.1 | ✗ | ✗ | 先刪除老文件,然后創建新文件 |
DirSync Pro 1.54b1 | ✓ | ✗ | 先刪除老文件,然后創建新文件 |
Syncovery 9.46k build 358 | ✓ | 🤔 需要調整參數,其實調整了也不是 atomic 的 | 可以調整 |
⭐️ FileGee 免費版 11.0.9 | ✓ | ✗ 不管是"鏡像同步"還是"增量備份",都沒法正確做單版本備份。 |
7.3 FreeFileSync 11.17
1. FreeFileSync windows 版本支持 long path。(source 和 target 均是 long path)
2. 鏡像同步的時候,如果選擇"永久刪除目標文件",在移動或者重命名文件的時候,會先把 target 的文件刪除掉,然后再拷貝數據到新的地址。如果同步到一半中斷了,會導致target里面的文件殘缺。也就是說,這樣做鏡像備份是有風險的,可能剛把 target 里面的數據清空了,新的數據還沒有拷貝過去,source 硬盤就掛了。這時候 target 里面的數據不完整,甚至沒法找回上一個版本的資料。
選擇 "放到回收站",在同步完成之后,再手動清空回收站:如果刪除的文件大小超過了回收站的承載能力,或者遇到了 long path,還是會導致文件丟失!!!
FreeFileSync 里面有一個 "Fail-Safe file copy" 的選項:
Delete (with versioning) before copy
按照這個論壇里面的說法,會先把新的文件拷貝過來,然后才會把老的文件刪除掉:
Computer freezes when the target disk runs out of space
In the FFS GUI, via Tools / Options you can disable the Fail-safe File Copy option.This will prevent FFS from making a spare copy of any "old" file until it is sure(as sure as possible) that copying over the new version of the file has succeeded and only then removes the spare copy of the old file.If copying over the new file fails, it will restore the old file.In case your disk is almost full, this can obviously cause problems.
但是經過測試,這個選項只在覆蓋文件的時候有用,如果是移動文件,還是先刪除老的文件,然后新增文件。這樣還是會有數據丟失的風險。
歷史版本只能手動清除,它里面的設置最大版本數量的功能無效。
FreeFileSync 拷貝文件的時候,是先拷貝到一個帶上 .ffs_tmp 后綴的文件,然后重命名移除掉后綴。拷貝到一半停止任務的話,拷貝中的 .ffs_tmp 文件會自動被刪除掉,不會留下垃圾。
安全的處理方案
使用 "Versioning 歷史版本",設置為無限歷史記錄版本數量,然后在 success 的時候執行命令清空歷史記錄文件夾。
7.4 AllwaySync 21.1.5
不支持 atomic mirror。
只能使用 Versioning 功能來避免老的數據全部被清空掉,歷史記錄設置為1,就能只保留1份歷史記錄,但是沒法保證歷史記錄是完整的,具體看下面的測試步驟。
按照下面的順序進行測試,發現它會把歷史記錄里面的東西清空掉,非常不安全(=> 代表重命名):
- v1 同步成功
- source: v1 => v2。然后同步到一半,停止。這時候 target: v1 進入了 history
- 修改 source: v2 => v3。然后再次開始同步。這時候 target history 中的 v1 被刪除掉了,把不完整的 v2 放到了 history 中。
這個軟件的 custom action 的 post synchronization 只能設置為在 error 或者 finished (包括 success 和 error) 的時候執行,沒法單獨設置為 success 的時候執行,所以也沒有辦法設置為無限歷史記錄版本數量,然后在 success 的時候執行命令清空歷史記錄文件夾。
7.5 Microsoft SyncToy 2.1
雖然軟件非常非常老了,但是居然支持高分屏!
能檢測到文件被移動了。
echo 模式,也就是鏡像同步的時候,對於 source 目錄已經刪除的文件夾,target 目錄不會刪除。
long path: 界面上會有錯誤信息,提示路徑太長。
atomic mirror: 只能選擇永久刪除文件,或者放到回收站。沒有移動到 version 文件夾的功能,自然也沒有辦法手動模擬。
7.6 DirSync Pro 1.54b1
界面在高分屏下非常模糊,界面看過去很亂。整個軟件設計得極端難用。
界面設計得極其垃圾,修改 Sync Mode 居然會把原來設置好的 source、target 文件夾、任務名稱全部給清空了!
任務進行到一半,居然沒法停止!
version居然是靠拷貝文件來實現的,不是用移動文件!!!
使用這個軟件簡簡單單拷貝下數據,居然占用了 40%-60% 的 CPU。作為對比,FreeFileSync 只用了 2% 不到的 CPU。
atomic mirror: 只能選擇永久刪除文件。可以設置 backup,但是backup數量設置沒有用,設置了只保留1個備份,在v1 => v2 => v3 的重命名操作后,v3同步完成之后,v1 v2 都放在了 backup 里面,而不是只保留 v2,v1 自動刪除。沒有 post synchronization action,所以沒法模擬。
7.7 Syncovery 9.46k build 358
向導模式能通過幾個步驟輕輕松松創建備份任務。高級模式能修改大量的設置。功能非常強大。支持 Filesystem Monitor Service 來監控 Block-Level 修改,然后同步的時候只同步修改的數據。能准確檢測到文件夾被重命名了。各種亂七八糟的安全提示有點多,不過可以選擇關閉。默認的選項不太合理,每次創建一個任務之后,都要手動改一堆的參數,而且好像沒有一個模板可以直接修改默認配置。所以這個軟件功能強大是強大,但是不太好用。
拷貝到一半停止任務的話,拷貝中的文件會自動被刪除掉,不會留下垃圾。這個軟件並沒有使用先拷貝到一個臨時目錄,然后 atomic move 過去的技術,文件名也沒有加上 .tmp 或者其他后綴,就是直接把原始文件拷貝到目標目錄,文件名不變。
long path: 完美支持。包括選擇文件的對話框也是自己做的,並不是用的 explorer,所以選擇文件的時候就能選擇任意深度的文件和文件夾。
atomic mirror:默認也是先刪除文件,然后創建文件,這樣不安全,不過可以調整。"Profile Settings" - "Advanced Settings" - "Files" - "Deletions" - "Delete Files Before Copying" 這個框去掉勾選就行了。這樣會先拷貝文件,然后才是刪除文件。
覆蓋文件的行為沒有確認。
7.8 ✗ FileGee 免費版 11.0.9
評價:界面簡潔易用,除了鏡像還有備份功能。
7.8.1 ✗ 如果使用鏡像同步功能來執行 atomic mirror
只能選擇永久刪除文件,或者放到回收站。沒有移動到 version 文件夾的功能,自然也沒有辦法手動模擬 atomic mirror。
在鏡像同步的時候,軟件會先刪除目標目錄中多余的老文件,然后才是拷貝新增的數據。比如你移動了文件,會先刪除目標目錄中原始位置的文件,然后才是拷貝數據到新的位置。所以在同步的過程中,新老數據都沒了。
7.8.2 ✗ 如果使用增量備份功能來執行 atomic mirror
可以設置在備份完成之后,自動刪除老版本。但是有一個重大的設計缺陷:備份失敗了也會刪除老版本,所以新的備份還不完整,老版本也被刪除了。開啟自動刪除的情況下有備份數據丟失的風險。
經過測試發現有問題的“單版本的增量同步”設置如下:



