我希望能夠在 Windows 上透過 cygwin 存取 Linux 分割區。我的目的是將資料從 Linux 伺服器備份到運行 Windows 7 的家用電腦。
答案1
答案2
據我了解,您希望透過將完整的目錄樹逐個檔案複製到另一台電腦來進行備份。誠然,這是進行備份的一種方法,但我建議採用不同的方法,特別是因為它在您的情況下似乎效果不佳。
我自己所做的(原則上)是在 Linux 伺服器上創建我想要本地備份的檔案的 tarball,並透過 ssh 將它們保存在其他地方(實際上是透過 sshfs,但沒關係)。只要 Linux 伺服器上的 tar 實作能夠處理檔名,這應該可以消除檔名問題。
您可以透過使用 ssh 伺服器設定 cygwin 以供 Linux 伺服器連線來完成此操作,或使用下列命令
ssh $server "tar c -C /var/important ./" > backup.tar
在要保留備份的電腦上從 cygwin 執行。您也可以將 tarball 保存在 Linux 伺服器上,然後再傳輸。
如果您想減少佔用的頻寬和磁碟空間量,我建議使用星星而不是 gnu tar,它是增量模式,它允許您只包含上次備份後修改的檔案。它仍然不會進行 rsync 的增量傳輸,但多個版本的檔案將佔用磁碟空間。另一方面,tarball 比目錄樹更容易有效壓縮(使用 xz 或其他東西)。
答案3
有一個註冊表設定確定 Windows 核心是否將檔案名稱視為不區分大小寫:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive
將其設為0
並重新啟動以允許檔案僅大小寫不同。也可以看看http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-casesensitive。
Cygwin 1.7 會自動將 Windows 檔案名稱中不允許的字元對應:
到「Unicode 專用區域」。一個很大的例外是反斜杠,為了 Windows 互通性,它將其視為目錄分隔符,因此您唯一能做的就是在 Linux 檔案名稱中避免使用它們,或者當然完全使用不同的方法。