與這個問題類似但要求更高:如何複製文件而不修改文件創建時間?
我想在計算機之間複製文件,而不弄亂“修改”和“創建”日期。
目的是比較diff
我在處理這些計算機時成功同步的 3 台不同計算機中的一些項目代碼。但我一次只在一台機器上工作,現在我不記得哪一台是最新的。這是一團糟,我想一勞永逸地統一這些副本(並希望將其置於版本控制之下)。
因此,當我使用diff
工具時,了解文件修改日期可以幫助我理解和合併更改。
3 台電腦中有 2 台是 Linux,1 台是 Windows 8。
歡迎任何其他實現上述目標的方法,任何在這種情況下的最佳實踐。
答案1
在 Linux(和其他類 Unix 作業系統)上,您可以使用以下命令將檔案複製到隨身碟或從 SMB/FTP 伺服器複製文件
cp -p
這應該保留時間戳。
我不知道上傳到伺服器時是否可以保留時間戳記。
答案2
文件/資料夾一般有三個屬性。建立、修改和存取時間。訪問時間並不重要。在linux中,創建時間並不是不被使用(並且不能使用標準程式存取)。所以唯一重要的屬性是修改時間。當使用作業系統的工具複製資料時,修改時間不會改變(至少對於linux)。如果不是這種情況,您可以在傳輸之前壓縮資料並在另一端解壓縮。一般來說,備份工具會保留所有屬性。
如果您想嚴格保留所有屬性,可以使用下列方法。
cp
使用選項-a
aka--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。