Questions tagged «cp»

cp-复制文件的命令行工具

6
如何使用cp以幂等方式递归复制文件夹?
当我使用 cp -R inputFolder outputFolder 结果取决于上下文: 如果outputFolder不存在,将创建它,并且克隆的文件夹路径为outputFolder。 如果outputFolder存在,则创建的克隆将为outputFolder/inputFolder 这太可怕了,因为我想创建一些安装脚本,并且如果用户错误地运行了两次安装脚本,那么他将outputFolder是第一次创建该脚本,然后在第二次运行时,将在中再次创建所有内容outputFolder/inputFolder。 我总是想要第一个行为:在原始对象旁边(作为同级对象)创建一个副本。 我想使用cp便携式(例如MINGW尚未rsync发货) 我查了一下cp -R --parents,但这个重新创建的路径一路目录树(因此克隆也不会outputFolder,但是some/path/outputFolder) --remove-destination或者--update如果2不做任何更改,仍然将内容复制到outputFolder/inputFolder 有没有一种方法,而无需先检查是否存在outputFolder(如果文件夹不存在,则...)或使用rm -rf outputFolder? 达成共识的可移植UNIX方式是什么?
46 cp  recursive 

2
cp -L与cp -H
问题 使用cp -H或复制文件时cp -L,我得到相同的结果: $ ls -l fileA fileA -> fileB $ cp fileA somewhere/ -H $ ls -l somewhere/ fileA # fileA is a copy of fileB, only renamed, with same properties! 此处的答案将这两个选项描述为与结合使用时类似的UNLESS -R。不适合我。软链接文件和硬链接文件将成为它们指向源文件的重命名副本。 问题: cp -H和的正确用法是cp -L什么?这是预期的行为吗? 我试图解决的问题: man cp告诉我两种选择都完全相同,但是info cp的措辞使我更加困惑。也许可以帮我分解一下: -H 如果命令行参数指定了符号链接,则复制它指向的文件而不是符号链接本身。但是,复制(保留其性质)通过递归遍历遇到的任何符号链接。 这听起来像是我的矛盾:我猜想» 符号链接的性质 «是指向某处… -L, --dereference …

2
如何复制符号链接?
我有一个指向一个目录中文件的符号链接。我想在另一个目录中使用相同的链接。如何复制符号链接? 我试图cp符号链接,但这会复制它指向的文件,而不是符号链接本身。
41 centos  symlink  cp 

12
有没有比cp更快的替代方法来复制大文件(〜20 GB)?
我是一名研究生,我所在的小组维护着Linux集群。群集的每个节点都有自己的本地磁盘,但是这些本地磁盘相对较小,没有自动备份。因此,该组拥有一个具有许多TB存储空间的文件服务器。我是Linux的相对新手,所以我不确定文件服务器在速度,网络能力等方面的规格是什么。我确实从经验中知道本地磁盘在I / O方面比文件服务器快得多。大约有十几个人使用文件服务器。 使用cp〜20 GB的文件从文件服务器复制到本地磁盘之一平均需要大约11.5分钟的实时时间(根据time)。我知道此cp操作的效率不是很高,因为(1)time告诉我该副本的系统时间仅为〜45秒;并且因为(2)top在复制期间进行检查时,%CPU相当低(通过检查,平均大约为0-10%)。 使用cp将大约20 GB的文件从本地磁盘上的一个文件夹复制到同一本地磁盘上的另一个文件夹所花费的时间更少-实时约为9分钟(根据,系统时间约为51秒time)。因此,显然文件服务器比预期的要慢于本地磁盘,但可能不会慢很多。我很惊讶从本地复制到同一本地的速度不超过9分钟。 我需要将大约200个大文件(每个〜20 GB)从文件服务器复制到本地磁盘之一。因此,我的问题是:在Linux中复制大文件是否有更快的选择cp? (或者cp我可以使用任何标记来加快复制速度吗?)即使我能以某种方式节省一分钟的复制时间,也将极大地帮助您。 我确定要购买新的,速度更快的硬件磁盘,但是我无法访问这些资源。我也不是系统管理员,我只是一个(新手)用户,所以我无法访问有关磁盘负载的更多详细信息。我确实知道,虽然每天有大约十二个人使用文件服务器,但我是唯一使用此特定节点/本地磁盘的人。
40 cp  file-copy 

5
如何使用保留的硬链接复制目录?
如何将具有共同文件的目录从一个分区移动到另一个分区? 假设我们已经挂载了分区,/mnt/X并且目录共享带有硬链接的文件。如何将此类目录移动到另一个分区,/mnt/Y保留这些硬链接就可以了。 为了更好地说明,“与硬链接共享文件的目录”是什么意思,下面是一个示例: # let's create three of directories and files mkdir -p a/{b,c,d}/{x,y,z} touch a/{b,c,d}/{x,y,z}/f{1,2,3,4,5} # and copy it with hardlinks cp -r -l a hardlinks_of_a 更具体地说,我们假设文件的总大小为10G,每个文件有10个硬链接。问题是如何使用10G将其移动到目的地(有人可能会说过使用100G复制它然后运行重复数据删除-这不是我要的内容)
40 files  cp  hard-link 

3
如何从没有文件夹本身的文件夹中复制文件
我正在尝试从A文件夹中复制文件和子文件夹,而没有A本身。例如,一个文件夹包含下一个: | file1.txt | file2.txt | subfolder1 执行下一条命令给我错误的结果: sudo cp -r /home/username/A/ /usr/lib/B/ 结果是 /usr/lib/B/A/...copied files... 代替.. /usr/lib/B/...copied files... 没有原始资料夹,我如何才能达到预期的效果
39 bash  command-line  cp 

4
解压缩文件内容,但不创建存档文件夹
我有一个myarchive.zip文件,其中包含许多目录,文件等。比方说,这个myarchive.zip文件位于一个名为“ b”的目录中。好吧,当我使用“ unzip myarchive.zip”命令时,系统默认会创建一个名为“ myarchive”的目录,其中包含压缩文件的内容。我不希望系统创建此“ myarchive”目录-我只希望将内容提取到目录“ b”。这可能吗? 我现在所做的只是简单地发出“ cp”命令,将文件从新创建的目录(在本例中为“ myarchive”复制到“ b”)复制到我想要的位置。
37 cp  zip 


6
为什么将cp设计为以静默方式覆盖现有文件?[关闭]
我cp使用以下命令进行了测试: $ ls first.html second.html third.html $ cat first.html first $ cat second.html second $ cat third.html third 然后我复制first.html到second.html: $ cp first.html second.html $ cat second.html first 该文件将second.html被静默覆盖,没有任何错误。但是,如果我在桌面GUI中通过拖放具有相同名称的文件来执行此操作,则该文件将first1.html自动添加后缀。这样可以避免意外覆盖现有文件。 为什么不cp遵循这种模式,而不是默默地覆盖文件?
30 cp  history 

4
GNU cp和mv中-T选项的附加值是什么?
为什么某些GNU Coreutils命令可以-T/--no-target-directory选择?看起来它所做的所有事情都可以使用.传统Unix目录层次结构中(自我点)的语义来实现。 考虑: cp -rT /this/source dir 该-T选项可防止副本创建dir/source子目录。而是用/this/source标识,dir并且内容相应地映射在树之间。因此,例如/this/source/foo.c去dir/foo.c等等,而不是去dir/source/foo.c。 但这可以轻松实现,而无需-T使用以下选项: cp -r /this/source/. dir # Probably worked fine since dawn of Unix? 语义上,尾随点组件被复制为的子元素dir,但当然“子”已经存在(因此不必创建)并且实际上是dir其本身,因此其效果/this/path由标识dir。 如果当前目录是目标目录,则可以正常工作: cp -r /this/tree/node/. . # node's children go to current dir 有什么事你可以做的只能用-T能合理化它的存在?(除了支持未实现点目录的操作系统外,文档中未提及的基本原理。) 上面的点技巧是否不能解决GNU Info文档中提到的相同竞争条件-T?
26 cp  coreutils 


6
尝试失败后如何cp剩余文件
我正在尝试将一个大目录从一个驱动器复制到另一个驱动器。我在完成之前错误地注销了,因此仅复制了大约80%的文件。是否可以复制其余文件而无需从头开始?
23 cp 

1
无法创建常规文件“文件名”:文件存在
我一直在我的一个构建脚本中收到此奇怪的错误消息- cp失败,返回错误“文件存在”。我什至尝试使用cp -f,如果文件存在,它将覆盖该文件,但错误仍然出现。运行cp覆盖现有文件,当我做手工完美。是什么导致此错误?
23 cp  concurrency 

2
复制具有多个扩展名的文件
我想将具有多个扩展名的文件复制到单个目标目录。 例如,我可以使用以下命令将工作目录中的所有.txt文件复制到名为的目录中destination: cp -v *.txt destination/ 我可以使用以下命令将工作目录中的所有.png目录复制到destination: cp -v *.png destination/ 但是将它们作为单独的命令键入非常耗时(即使使用命令历史记录也是如此)。因此,有什么办法可以告诉我cp将带有模式*.txt 或模式的文件复制*.png到destination? 理想情况下,我想能够指定两个以上的模式-就像指导cp复制所有*.txt 或 *.png 或 *.jpg文件destination,例如。 我确信使用shell脚本可以实现所有这些功能- bash例如,我正在使用-但是有什么方法可以仅通过控制台更简单地完成它吗?我能以某种方式使用括号扩展吗? 我知道这是可能的所有文件复制除了匹配某些特定模式的工作目录,但由于我的工作目录含有更多的文件扩展名,我不希望比我复制这样做,那将是一个痛苦。 您对此有什么想法吗?
22 bash  shell  wildcards  cp 

4
带有硬链接的cp的行为感到惊讶
我非常了解硬链接的概念,并且已经阅读了一些基本工具的手册页,例如cp---甚至是最新的POSIX规范---。我仍然惊讶地观察到以下行为: $ echo john > john $ cp -l john paul $ echo george > george 在这一点上john,它们paul将具有相同的inode(和内容),并且george在两个方面都将有所不同。现在我们做: $ cp george paul 在这一点上,我期望george并paul拥有不同的inode编号,但是内容相同-实现了这一期望-但我也期望paul现在拥有与in相同的inode编号john,并且john仍然具有内容john。这就是我感到惊讶的地方。事实证明,将文件复制到目标路径paul还导致在共享inode的所有其他目标路径上安装相同文件(相同inode)的结果paul。我当时想cp创建一个新文件,然后将其移动到旧文件所占据的位置paul。相反,它似乎要做的是打开现有文件paul,将其截断并写入george的内容添加到该现有文件中。因此,具有相同inode的任何“其他”文件都将同时更新“其”内容。 好的,这是系统性的行为,现在我知道可以期待它了,因此我可以弄清楚如何解决它,或者适当地利用它。让我感到困惑的是应该在哪里看到该行为记录在案?如果我没有看过文档中的某处,我会感到惊讶。但是显然我错过了,现在找不到讨论此行为的消息来源。
20 cp  hard-link 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.