我在一台机器上有一个源目录,里面有一堆文件,所有文件都具有相同的权限,我想将它们复制到通过 SMB 安装的另一个目录。
[tmark@dexter JR09141045 roche_454_transfer]$ ls -l /source_dir
total 71348
-rwxrwxrwx 1 adminrig lifelabs 19768377 Mar 25 23:29 1.TCA.454Reads.fna
-rwxrwxrwx 1 adminrig lifelabs 53093396 Mar 25 23:29 1.TCA.454Reads.qual
-rwxrwxrwx 1 adminrig lifelabs 1035 Mar 25 23:29 454AllControlMetrics.csv
-rwxrwxrwx 1 adminrig lifelabs 2657 Mar 25 23:29 454AllControlMetrics.txt
-rwxrwxrwx 1 adminrig lifelabs 4607 Mar 25 23:29 454BaseCallerMetrics.csv
-rwxrwxrwx 1 adminrig lifelabs 14518 Mar 25 23:29 454BaseCallerMetrics.txt
-rwxrwxrwx 1 adminrig lifelabs 351 Mar 25 23:23 454DataProcessingDir.xml
-rwxrwxrwx 1 adminrig lifelabs 702 Mar 25 23:29 454QualityFilterMetrics.csv
-rwxrwxrwx 1 adminrig lifelabs 1609 Mar 25 23:29 454QualityFilterMetrics.txt
-rwxrwxrwx 1 adminrig lifelabs 13496 Mar 25 23:29 454RuntimeMetricsAll.csv
-rwxrwxrwx 1 adminrig lifelabs 26967 Mar 25 23:29 454RuntimeMetricsAll.txt
-rwxrwxrwx 1 adminrig lifelabs 1675 Mar 25 14:48 dataRunParams.xml
-rwxrwxrwx 1 adminrig lifelabs 7134 Mar 25 23:29 gsRunProcessor.log
目标目录通过 SMB 安装,我正尝试一次性复制一组文件。
[tmark@dexter JR09141045 target_dir]$ cd /target_dir
[tmark@dexter JR09141045 target_dir]$ cp -p /source_dir/* ./
cp: preserving times for `./454AllControlMetrics.csv': Operation not permitted
cp: preserving times for `./454AllControlMetrics.txt': Operation not permitted
cp: preserving times for `./454BaseCallerMetrics.csv': Operation not permitted
cp: preserving times for `./454BaseCallerMetrics.txt': Operation not permitted
cp: preserving times for `./454DataProcessingDir.xml': Operation not permitted
cp: preserving times for `./454QualityFilterMetrics.csv': Operation not permitted
cp: preserving times for `./454QualityFilterMetrics.txt': Operation not permitted
cp: preserving times for `./454RuntimeMetricsAll.csv': Operation not permitted
cp: preserving times for `./454RuntimeMetricsAll.txt': Operation not permitted
cp: preserving times for `./dataRunParams.xml': Operation not permitted
cp: preserving times for `./gsRunProcessor.log': Operation not permitted
[tmark@dexter JR09141045 target_dir]$ ls -l
total 71264
-rwxrwxrwx 1 tmark 1008 19768377 Mar 25 23:29 1.TCA.454Reads.fna
-rwxrwxrwx 1 tmark 1008 53093396 Mar 25 23:29 1.TCA.454Reads.qual
-rwxr-xr-x 1 tmark 1008 1035 Apr 1 2015 454AllControlMetrics.csv
-rwxr-xr-x 1 tmark 1008 2657 Apr 1 2015 454AllControlMetrics.txt
-rwxr-xr-x 1 tmark 1008 4607 Apr 1 2015 454BaseCallerMetrics.csv
-rwxr-xr-x 1 tmark 1008 14518 Apr 1 2015 454BaseCallerMetrics.txt
-rwxr-xr-x 1 tmark 1008 351 Apr 1 2015 454DataProcessingDir.xml
-rwxr-xr-x 1 tmark 1008 702 Apr 1 2015 454QualityFilterMetrics.csv
-rwxr-xr-x 1 tmark 1008 1609 Apr 1 2015 454QualityFilterMetrics.txt
-rwxr-xr-x 1 tmark 1008 13496 Apr 1 2015 454RuntimeMetricsAll.csv
-rwxr-xr-x 1 tmark 1008 26967 Apr 1 2015 454RuntimeMetricsAll.txt
-rwxr-xr-x 1 tmark 1008 1675 Apr 1 2015 dataRunParams.xml
-rwxr-xr-x 1 tmark 1008 7134 Apr 1 2015 gsRunProcessor.log
请注意,前两个文件的时间和权限与源目录中的相同,但其余文件的时间和权限不同。
因此,看来我可以复制一些文件并保留其权限和时间,但不适用于其他文件即使所有源文件都来自同一个地方,并具有相同的权限和(或多或少)时间,并且我同时将它们全部复制到同一个目录 - 因此具有相同的 umask 等。
那么,为什么我可以保留某些文件的时间,但不能保留所有文件的时间?
我很乐意提供更多细节(umask、Linux 版本、smb.conf 等等),但我不明白这些细节如何解释我所看到的内容——因为它们在这里应该是恒定的。
答案1
在 Unix 上,无法在用户不拥有的文件上保留时间戳。
file1
这就是为什么如果和file2
由不同的用户拥有并且file2
已经存在时,以下命令会失败的原因:
cp -p file1 file2
似乎这是您的情况,因为源文件归所有,adminrig
而目标文件归所有tmark
。
不确定是否有解决方法,因为强制使用并-f
不能解决问题。
如果可以,请尝试更改目标文件的所有权......
答案2
我知道这已经过时了,但我在尝试复制 cifs 共享时也遇到了同样的问题。我在 sudoers 中设置了几个带有 NOPASSWD 选项的命令,其中一个是 cp。如果我执行 sudo cp -r from.file to.file,它似乎有效。如果您有能力执行 sudo,这可能是一个选择。