
有沒有辦法建立硬連結以在相同磁碟機(NTFS 格式)上建立資料夾的副本?我想做這樣的事情: XCOPY E:\TEMP\SAMPLE1* E:\TEMP\SAMPLE2\ /s 但不是實際複製檔案並使用額外的磁碟機空間,而是建立到檔案的硬連結。
目標:SAMPLE2 資料夾中只有少數我們不需要的文件,但希望將所有文件保留在 SAMPLE1 中。資料夾 SAMPLE2 最終將複製到另一個磁碟機。
注意:SAMPLE1 的總內容約為 400GB(其中包含多個子資料夾),我們要從 SAMPLE2 中排除的每個文件約為 20-40MB(有很多,100 多個文件,位於不同的位置)子資料夾)。
那麼,除了使用硬連結之外,有沒有一種方法可以執行與 XCOPY(上面的命令)等效的操作,然後我們刪除 SAMPLE2 中不需要的所有文件,然後再將它們複製到外部驅動器;然後刪除 SAMPLE2 資料夾。
答案1
這有點像駭客,但是:
- 使用 GUI 製作常規完整副本。複製/貼上等。
- 運行 DupeGuru,將來源設為參考,並將 dupe 設為“正常”
- 報告完成後,執行「全選>刪除」並勾選「重新建立為硬連結」選項。它還可以做符號連結。您應該恢復一些磁碟空間。我有時會用它來準備一個資料夾,以便在使用腳本刪除結構中的許多其他檔案後上傳。
獎勵:它可以在 Mac、Windows 和 Linux 上運行。好的!https://dupeguru.voltaicideas.net/
答案2
無需第三方軟體。這可以透過以下方式完成電源外殼。這是一個支援管道的函數,它採用來源路徑 ($Path) 和「鏡像」路徑 ($MirrorPath)。它使用來源路徑和子資料夾中的檔案的硬連結填充鏡像路徑,以匹配來源子資料夾,這些子資料夾也是遞歸填充的。
Function Mirror-Path {
Param(
[Parameter(Mandatory,ValueFromPipeline,Position=0)]
[String[]]
$Path,
[Parameter(Mandatory,Position=1)]
[String]
$MirrorPath
)
Begin{
If ( ! ( Test-Path $MirrorPath )) {
mkdir $MirrorPath -Force | out-null
}
}
Process{
ForEach ( $Target in $Path ) {
If ( Test-Path $Target ) {
Resolve-Path $Target | gci -File | ForEach {
New-item -ItemType Hardlink -Path $MirrorPath -Name $_.Name -Target $_.FullName | out-null
}
Resolve-Path $Target | gci -Directory | ForEach {
Mirror-Path $_.FullName ( Join-Path $MirrorPath $_.Name )
}
}
Else {
Echo "'$Target' is not a valid path."
}
}
}
End {}
}
答案3
這在理論上很簡單。您需要建立目錄的符號鏈接,它將完全按照您的要求進行操作。它將外觀和行為類似於真實文件的捷徑複製給使用者和程式。然後,您可以刪除不需要的符號鏈接,這只會刪除鏈接;然後你像平常一樣複製其餘的「檔案」(真正的連結),它將複製實際的檔案。
但Windows是基於GUI的,並且沒有內建的GUI解決方案來建立符號連結。此外,命令提示字元也讓這變得困難。 (如果您使用 Linux,則可以透過終端輕鬆直接地進行操作,並且一些圖形檔案管理器(例如 GNOME Commander)也可以透過 GUI 輕鬆實現。)
所以..要執行上述解決方案,「簡單」的方法是下載插件和支援檔案(如果需要;請閱讀下載說明)這裡 這會將符號連結選項新增到您的右鍵選單中。您想要的是「選擇連結來源」來「複製」目錄,然後「Drop As > Hardlink Clone」來貼上。當您想要刪除檔案(連結)等時,請在連結目錄中工作。然後定期將其複製並貼上(不要選擇連結並貼上為)到您想要的任何位置,瞧,快捷方式複製為文件!
最後,刪除連結的資料夾,就好像什麼事都沒發生一樣。
該插件似乎工作得很好。試試看!請注意僅建立硬連結(無軟連結或連接),並確保使用連結而不是真實檔案!
現在對於那些提到 mklink 的人來說,這是我在開發這個答案時遇到的情況。透過以管理員身份運行的命令提示字元(搜尋CMD 並右鍵單擊並以管理員身份運行)使用mklink 應該工作相同......但它不適合我(以及許多其他人,如果你搜尋) 。即使透過 secpol.msc 修改權限後,我的存取仍被拒絕。這似乎是一個普遍存在的問題。
答案4
連結外殼擴展
此實用程式將 shell 擴充功能新增至 Windows 資源管理器上下文功能表中,從而可以拖曳/放置建立硬連結,路口和符號連結。它確實很舊,最初創建於 1999 年,但仍在更新並且仍然按預期工作。我相信這是最用戶友好的解決方案。