为什么我的 cp 命令无法复制整个目录?

为什么我的 cp 命令无法复制整个目录?

我测试了该cp命令,它只会复制单个文件。例如,我输入cp后跟确切的文件名,然后输入目录,文件就被复制了。但是,当我输入目录和目标目录时,计算机上没有任何变化。我以为cp应该复制目录中的内容。

我已尝试过多次。

答案1

当你使用cp如果不带任何参数,则默认复制文件,如下所示

 cp sourcefile destinationLocation
 #will copy sourcefile to the specified destinationLocation

但是如果你想复制一个目录,你需要像这样指定递归参数

cp -R dir1 dir2 #copies dir1 to dir2
cp -R dir dir2 dir3 #copies dir1 & dir2 to dir3

理想情况下,您可以指定任意数量的文件到单个目标,所有文件之间用空格分隔。但是,下面将复制目录及其权限

 sudo cp -rp /home/me /media/backup/me
 -p     same as --preserve=mode,ownership,timestamps

或者你可以使用 rsync

 sudo rsync -a /home/me/ /media/backup/me/
 -a, --archive

          Note that -a does not preserve hardlinks, because finding  multiply-linked
          files is expensive.  You must separately specify -H.

使用 rsync 复制时请不要忘记末尾的斜杠。查看每个命令的手册页,了解在终端上输入这些命令的选项男人 cp或者rsync 命令

答案2

使用

cp -R

它指定递归复制,即复制所有子目录和文件。用于man cp查找 cp 的更多开关。

答案3

cp默认情况下不复制目录。从man 1posix cp

2. If source_file is of type directory, the following steps  shall  be
   taken:

    a. If  neither the -R or -r options were specified, cp shall write
       a diagnostic message to standard error, do  nothing  more  with
       source_file, and go on to any remaining files.

你应该收到如下消息:

cp: omitting directory '...'

例如:

$ cp Documents Pictures
cp: omitting directory ‘Documents’

从手册页可以看出,使用-r-R与 一起使用cp

cp -R Documents Pictures

相关内容