如何将目录及其内容复制到新目录名下的新位置?

Edm*_*ntu 94 command-line directory cp copy

我是 Linux 命令行的新手,目前正在尝试使用 copy 命令。

任何人都可以告诉我是否可以将目录及其子目录和关联文件复制到具有新名称的新目录中,例如directory_backup

提前感谢您的任何帮助。

Zan*_*nna 124

你可以用cp-r(复制递归)标志,并指定新的目录名:

cp -r /path/to/directory /path/to/location/new-name
Run Code Online (Sandbox Code Playgroud)

在上面的命令中,用真实的路径替换给定的路径。

例如,stuff要从我的主目录复制到一个名为的现有目录backup并命名新目录stuff-backup(如果此目录已存在,请注意stuff将复制其中,而不是覆盖它),请运行:

cp -r ~/stuff ~/backup/stuff-backup
Run Code Online (Sandbox Code Playgroud)

~是您的主目录/home/$USER/home/zanna在我的情况下的快捷方式。如果当前工作目录是您的主目录,您可以省略它 - 您可以从提示中看到这一点

zanna@monster:~$
              ^--the ~ here is where I am - home!
Run Code Online (Sandbox Code Playgroud)

您可以添加-v(详细)标志来cp报告正在执行的每个副本:

$ cp -vr stuff backup/stuff-backup
'stuff/thing1' -> 'backup/stuff-backup/thing1'
'stuff/thing2' -> 'backup/stuff-backup/thing2
...
Run Code Online (Sandbox Code Playgroud)


Byt*_*der 14

您需要的命令只是cp代表“复制”。

例如,您可以将它与以下语法之一一起使用:

cp SOURCEFILE TARGETFILE
cp SOURCEFILE TARGETDIRECTORY
Run Code Online (Sandbox Code Playgroud)

第一个变体允许您为目标文件指定一个新文件名,而第二个变体在目标目录中创建一个具有相同名称的副本。您当然必须首先用有效路径替换大写字母的占位符。

但是,cp默认情况下仅对文件进行操作,而不对目录进行操作。要让它递归复制包含其所有内容的完整目录,您必须添加-r选项:

cp -r SOURCEDIRECTORY TARGETDIRECTORY
Run Code Online (Sandbox Code Playgroud)

您可以cp通过man cp在终端中键入来了解有关该命令的更多信息。


slo*_*wko 10

作为通常有用的 cp 命令的替代,您可以使用 rsync,它具有复制原始目录结构的权限/时间戳的额外好处:

rsync -av dir/ newdir
Run Code Online (Sandbox Code Playgroud)

-a 存档 -v 详细

注意源目录后面的斜杠。


小智 9

您可以使用以下命令将目录从一个地方复制到另一个子目录。

cp -Rvp /home/edmuntu/data /home/edmuntu/mydata/
Run Code Online (Sandbox Code Playgroud)

命令解释:

  • -R = 递归复制目录
  • v = 解释正在做什么
  • p = 它将帮助您使用时间戳保留您的许可和所有权


The*_*Odd 8

cp是执行您正在寻找的功能的命令。它代表复制,它就是这样做的。在这种情况下对您有用的命令是

cp -R source/ destination/

这会将source/文件夹及其所有子目录复制到destination/.

如果destination/不存在,它将被创建。

-R标志代表递归,它告诉cp复制所有子目录。


Win*_*nix 5

我发现切换到我首先复制的目录更容易。对于本示例,更改为每个人都调用过的目录/boot。任何人都可以将以下命令复制并粘贴到他们的终端中。

cd /boot
sudo mkdir /boot_backup
sudo cp -r . /boot_backup
du /boot_backup -h

752K    /boot_backup/extlinux/themes/debian-wheezy
756K    /boot_backup/extlinux/themes
832K    /boot_backup/extlinux
2.5M    /boot_backup/grub/i386-pc
20K     /boot_backup/grub/locale
2.3M    /boot_backup/grub/fonts
7.2M    /boot_backup/grub
565M    /boot_backup
Run Code Online (Sandbox Code Playgroud)

对于cp命令,当前目录被标识为我们更改到./boot目录。该-r选项使其递归包含所有子目录。

在这种情况下,为了确保它运行du以列出新目录/boot_backup中的所有子目录和总文件大小。

完成本演练后,使用:sudo rm -r /boot_backup删除新目录及其子目录。