如何將檔案從一台電腦複製到另一台電腦而不遺失任何元資料?

如何將檔案從一台電腦複製到另一台電腦而不遺失任何元資料?

與這個問題類似但要求更高:如何複製文件而不修改文件創建時間?

我想在計算機之間複製文件,而不弄亂“修改”和“創建”日期。

目的是比較diff我在處理這些計算機時成功同步的 3 台不同計算機中的一些項目代碼。但我一次只在一台機器上工作,現在我不記得哪一台是最新的。這是一團糟,我想一勞永逸地統一這些副本(並希望將其置於版本控制之下)。

因此,當我使用diff工具時,了解文件修改日期可以幫助我理解和合併更改。

3 台電腦中有 2 台是 Linux,1 台是 Windows 8。

歡迎任何其他實現上述目標的方法,任何在這種情況下的最佳實踐。

答案1

在 Linux(和其他類 Unix 作業系統)上,您可以使用以下命令將檔案複製到隨身碟或從 SMB/FTP 伺服器複製文件

cp -p

這應該保留時間戳。

我不知道上傳到伺服器時是否可以保留時間戳記。

答案2

文件/資料夾一般有三個屬性。建立、修改和存取時間。訪問時間並不重要。在linux中,創建時間並不是不被使用(並且不能使用標準程式存取)。所以唯一重要的屬性是修改時間。當使用作業系統的工具複製資料時,修改時間不會改變(至少對於linux)。如果不是這種情況,您可以在傳輸之前壓縮資料並在另一端解壓縮。一般來說,備份工具會保留所有屬性。
如果您想嚴格保留所有屬性,可以使用下列方法。

cp使用選項-aaka--archive或 --preserve=all

rsync使用-t.

預設情況下,這些命令在 Linux 中可用(也可在 Windows 中下載)。
如果您對命令列工具不感興趣,請使用支援屬性複製的同步工具來複製資料。

答案3

如果您不確定電腦上最好的程式碼是什麼,我認為最好將所有三個來源目錄複製到一台電腦上,然後逐個檔案合併。合併工具

另一種方法是在一台機器上建立一個 git repo,然後從另一台電腦複製原始程式碼,覆蓋 git repo 文件,或只是將它們新增到一個新分支,然後使用git的合併。對於 Windows,我更喜歡烏龜 Git 用戶端用於完成所有基本的版本控制工作。

至於元資料副本,按照其他人的建議,您可以使用rsync -t, cp --preserve=all。對於 FTP 傳輸,您可以使用scp -p.

答案4

您可以在兩台 Linux 計算機之間使用同步,它將保持時間戳不變。
對於 Windows,您可以使用機器人複製要在不更改時間戳記的情況下複製文件,也許您可以使用它將文件從 Linux 機器中的 FTP 伺服器複製到 Windows。

相關內容