Rsync

從 ext4 複製到 NTFS-3G 時,rsync 將大小翻倍

  • November 5, 2019

我想使用 . 將我的home目錄備份到外部 SSD 驅動器rsync

我在 Arch Linux 上。我家是ext4(251G),SSDNTFS-3G掛載為fuseblk(512G)。

確切的rsync呼叫是:

rsync -aSh --info=progress2 --delete --exclude=/me/.cache /home/me /run/media/me/Samsung_T5/

最終,它失敗了,這是它的遺言:

       218.76G  99%   25.08MB/s    2:18:36 (xfr#2093188, ir-chk=1368/2286507)
rsync: write failed on "/run/media/me/Samsung_T5/me/a_file": No space left on device (28)

因此,rsync據稱複製了大約 218G 的數據,並且由於我的 SSD 已滿而無法繼續。

當我詢問du我的 SSD 目標上有多少數據時rsync,它說 466G。

$ du -hs /run/media/me/Samsung_T5/me
466G    /run/media/me/Samsung_T5/me

這很奇怪。rsync試圖複製281G,但是複制218G失敗了,因為它實際上複製了466G。

我在這裡做錯了什麼?

我確實知道這一點NTFS並且ext4與眾不同。但是它們是否足以使我的文件大 2 倍以上?我複制的是否比我實際擁有的多home

rsync我的 ~280G 備份home到我的 SSD 的正確程序是什麼home

更新

$$ Thanks to the comments below $$: 我的源目錄中有大量小文件和一定數量的稀疏文件。例如,源中有一個 4K 大的文件,目標中有一個 128K 大的文件。還有一個稀疏文件,源中為 12K,目標中為 128K。

此外,我確實有 244 個指向不同執行檔(例如,共享庫)的硬連結。其中一些硬連結指向一些相對較大的文件。例如,一個版本的binutils連結器 ( ld) 大約 7M,我有 4 個硬連結。

您可能會查看duplicity及其 gui deja-dup。它使用 tar 文件進行增量備份,可選擇加密,可選擇遠端伺服器。

它使用 librsync 及其滾動校驗和算法,以便每個增量存檔僅保存文件的更改部分。

首頁說它處理 Unix 權限、符號連結、fifos 和設備文件,但不保留硬連結。如果您有許多大的硬連結文件,它在存檔中可能不是最佳的,但更重要的是,您可能還需要單獨注意哪些文件是相互連結的,以便如果您需要恢復它們,您可以放回連結。如果可能,轉換為符號連結將解決此問題。


您可以使用類似的東西尋找硬連結

find /home/me -links +1 -type f -printf '%n %i %D %p\n' | sort -n 

其中格式字元串顯示%n連結%i數、inode 編號、文件所在%D設備%p路徑名。具有相同 inode 編號和設備的行是硬連結。該設備僅在目錄樹中有掛載點時才有用(因為不同設備上的同一個 inode 不是同一個文件)。當然,即使是 rsync,也無法處理指向樹外文件的硬連結。

引用自:https://unix.stackexchange.com/questions/550202