
我的情況:我有一個透過 CIFS/Samba 提供共享服務的 NAS。在內部,它使用 ext3 檔案系統,但這不相關(我認為)。我有一些 Linux 電腦(使用 ext4 檔案系統),我想在這些共用上進行備份。
我的問題:使用共享進行備份會帶來兩個主要問題。一方面,我無法將所有檔案複製到 NAS,因為有些檔案的檔案名稱很長,CIFS 無法處理。另一方面,檔案和目錄權限未正確複製。例如,共用上的每個檔案都設定了所有「執行」位,無論原始檔案的權限為何。
我的問題:規避這些「缺點」以便我可以備份和恢復檔案而無需手動處理檔案名稱和權限的最簡單方法是什麼?
到目前為止我的實驗的一些附加資訊:
我的第一個想法是在共享上的(稀疏)檔案中建立 ext4 檔案系統,然後掛載這些檔案系統並將它們用於實際備份。這裡的缺點是從檔案系統中刪除檔案不會減少共享上 ext4「檔案」的大小,而且檔案系統必須從一開始就限制大小。創建後調整它們的大小很麻煩。
我嘗試使用加密檔案系統因為我希望它能夠對檔案名稱和權限進行加密,從而繞過 CIFS 限制。這不起作用,因為檔案名稱已加密,但再次用作檔案名稱(因此長檔案名稱只會變得更長,而不是更短)。此外,權限不會被 ecryptfs「隱藏」。加密的檔案僅保留原始檔案的權限,因此任何解密的檔案將再次設定所有「執行」位元。
IRC 上的一位友好人士建議使用動態數量的大文件並將它們用作 LVM 的捲。我還沒有對此進行測試,但理論上它應該有效。我將有一個帶有 ext4 的邏輯卷,它將分佈在共享上的多個文件中。如果我需要更多空間,我會建立更多檔案並將它們添加到卷中,如果我使用較少空間,我可以刪除一些檔案。這裡唯一的缺點是我仍然必須執行調整大小(並定期檢查實際需要多少空間)。回想起來,這比使用單一檔案幾乎沒有優勢,因為我可以截斷/增長它們,然後也調整 ext4 檔案系統的大小。
我想像的是一個 FUSE,它將檔案名稱和權限保存在資料庫中,並且不依賴底層檔案系統來支援所有內容。不幸的是,我還沒有發現這樣的東西。
答案1
Samba 和 ecryptfs 似乎在 Ubuntu 14.04 上對我有用。
我使用了這個指南:http://www.cyberciti.biz/faq/adding-a-user-to-a-samba-smb-share/
我的預感是,訣竅是在以下位置提供相同的密碼:
passwd USER
和
smbpasswd -a USER
我假設 ecryptfs 在將密碼提供給 Samba 時獲取密碼,我很想聽到關於這是如何發生的澄清。