我尝试使用以下命令创建到源驱动器和目标驱动器的符号链接:
sudo ln -s /media/phil/4A05-B4F6 /olddisc
sudo ln -s /media/phil/3117e488-bf89-426e-a606-55e8397cf1ee /pcdisc
我将目录更改为 /olddisc,这样就成功了。但是使用 ls 命令时,它只显示“系统卷信息”,这毫无帮助。
我是 UBUNTU 新手。
我希望能够使用 cp 命令将文档树结构和内容从 olddisc 复制到 pcdisc。
答案1
你混淆了不同的、相当独立的方面:
1. 符号链接
Linux 中的符号链接 (symlinks) 允许从另一个文件夹创建对某个文件夹的访问。例如:
sudo ln -s /media/phil/4A05-B4F6 /olddisc
将确保 的内容/media/phil/4A05-B4F6
也可以在 中看到/olddisc
。
从实际用途来看,符号链接的感觉和行为就像一个真实目录。因此,你可以将内容复制到该目录或从该目录复制内容。
2. 复制整个目录树
有很多方法可以做到这一点。标准cp
(复制)命令可以在使用适当选项执行时做到这一点,-R
.rsync
是更专业的工具,它具有强大的功能,可以仅将新文件或更新的文件从源目录复制到目标目录,这使得它非常适合同步两个目录或维护备份。
因此,您可以使用以下命令复制整个目录树:
cp -R /media/phil/4A05-B4F6/* /media/phil/3117e488-bf89-426e-a606-55e8397cf1ee
由于您创建了符号链接,因此可以使用以下方法实现相同的效果
cp -R /olddisc /pcdisc
rsync
可以与-a
(存档)标志一起使用来“镜像”目录:
rsync -av /olddisc/ /pcdisc/
(pcdisk
应该已经存在,并且尾随/
很重要:保留它们或将它们排除在外具有不同的含义,并且根据目标是否存在可能会有不同的结果)。
使用备注sudo
sudo
*尽可能避免使用。仅当您知道自己在做什么时才将其用于系统任务。 *对于复制用户数据,您不必使用sudo
。
在 Linux 上,用户可以在已授予权限的目录中复制/移动/删除。您自动拥有对主目录中的文件以及登录时连接的可移动硬盘中的文件的权限。
在其他情况下,例如内部分区,用于sudo
授予自己权限。然后以用户身份继续操作用户数据。仅用于sudo
复制、移动或删除系统文件。
答案2
您可以使用以下cp
命令来实现您想要的:cp -a source-dir/ dest-dir/
-a 选项启用“存档模式”,它将以递归方式复制所有内容,同时保留权限、时间戳和 SELinux 上下文(如果有)。
请注意,符号链接不会将任何内容从源复制到目标,它类似于 Windows 上的快捷方式的概念。