与这个问题类似,但要求更高:如何复制文件而完全不修改文件创建时间?
我想在计算机之间复制文件,并且不混淆“修改”和“创建”日期。
目的是比较diff
3 台不同计算机上的某个项目代码,我在处理这些代码时设法进行了同步。但我一次只在一台机器上工作,现在我不记得哪台机器是最新的。这太乱了,我想一劳永逸地统一这些副本(并希望将其置于版本控制之下)。
因此,当我使用diff
工具时,了解文件修改日期可以帮助我理解和合并更改。
3 台计算机中 2 台是 Linux,1 台是 Windows 8。
欢迎以任何其他方式实现上述目标以及在这种情况下的任何最佳做法。
答案1
在 Linux(和其他类 Unix 操作系统)上,您可以使用
cp -p
这应该保留时间戳。
我不知道上传到服务器时是否可以保留时间戳。
答案2
通常,文件/文件夹有三个属性:创建时间、修改时间以及访问时间。访问时间并不重要。在 Linux 中,创建时间不被使用(并且无法使用标准程序访问)。因此,唯一重要的属性是修改时间。使用操作系统的工具复制数据时,修改时间不会改变(至少对于 Linux 而言)。如果不是这种情况,您可以在传输之前压缩数据,然后在另一端解压缩。通常,备份工具会保留所有属性。
如果您想严格保留所有属性,可以使用以下方法。
cp
使用选项-a
aka--archive
或 --preserve=all
或
rsync
使用-t
。
这些命令在 Linux 中默认可用(Windows 也可以下载)。
如果您对命令行工具不感兴趣,请使用支持属性复制的同步工具来复制数据。
答案3
如果您不确定计算机上最好的代码是什么,我认为最好将所有三个源目录复制到一台机器上,然后逐个文件合并。合并工具。
另一种方法是在一台机器上创建一个 git repo,然后从另一台计算机复制源,覆盖 git repo 文件,或者只是将它们添加到新分支,然后使用git的合并。对于 Windows,我更喜欢Tortoise Git 客户端用于完成所有基本的版本控制工作。
至于元数据复制,正如其他人所建议的,您可以使用rsync -t
, cp --preserve=all
。对于 FTP 传输,您可以使用scp -p
。
答案4
在两台 Linux 计算机之间,您可以使用同步,它将保留时间戳。
对于 Windows,您可以使用机器人复制复制文件而不改变时间戳,也许您可以使用它将文件从 Linux 机器中的 FTP 服务器复制到 Windows。