Linux复制命令cp
作为Linux用户,复制文件和目录是我们必须执行的日常任务之一。
它可以复制文件以使备份或者将其复制到另一个分区,目录或者外部存储驱动器。
使用UNIX系统和所有Linux发行版,我们可以使用两种方式来复制文件 - 使用图形方法和命令行方法复制文件。
在此特定文章中,我们将使用CP命令查看命令行方法。
CP代表Linux系统中的副本。
该命令通常需要两个主要参数 - 要复制的文件和粘贴文件的目标。
这将用以下语法说明:
- cp [file_to_copy] [destination_to_paste] - cp [file_to_copy] [directory_to_paste] - cp [file_to_copy_One] [file_to_copy_Two] [destination_to_paste] - cp [option] [file_to_copy] [destination_to_paste]
1.在同一目录中复制文件,但使用不同的名称。
它是一种方法,可以用来以不同的名称备份文件。
语法如下:
cp [file_to_copy] [file_new_name] cp testFile fileone
将带有CP的文件复制到不同名称的目录。
从上面的图像中,当我们运行ls命令时,我们看到我们有一个创建的testfile与名称文件的重复。
2.将单个文件复制到新目录中。
假设我们要将文件复制并将其粘贴到另一个目录,请使用以下语法:
cp [source] [directory/] cp testFile UBUNTU
将文件复制到目录中
从上面的图像中,我们有一个名为桌面上的'theitroad'目录的文件。
我们希望使用图像中的命令将其复制到theitroad目录中的Ubuntudirectory。
通过在Ubuntu目录上运行lscommand,我们看出我们已成功复制文件。
3.将多个文件复制到目录中
假设我们有几个要放入一个目录的文件,我们无需为每个目录运行一个命令。
以下是我们使用的语法:
cp [file_to_copy_One] [file_to_copy_Two] [file_to_copy_Three] [destination_to_paste/] cp testFile testFile2 testFile3 UBUNTU/
将多个文件复制到目录中
从上面的图像中,我们将Testfile TestFile2和TestFile3复制到Ubuntu目录中的文件。
4.使用CP命令将所有文件复制到目录中。
上一个命令向我们展示了我们如何将多个文件复制到目录中。
该方法仅为相对少量的文件有效,因为它可能是耗时的。
如果要将出现的所有内容复制到目录,甚至还有更简单的方法 - 使用Theasterisksign'*。
'请参阅以下语法:
cp [*] [destination directory] cp * /home/tuts/Desktop/theitroadTUTS/
将所有文件复制到目录中
从上面的图像中,我们已将桌面上的theitroad目录中的所有文件复制到theitroadTUTS目录。
5.使用CP命令以交互方式复制文件。
它是将多个文件复制到目录的有效方法。
如果目标目录在源目录中具有类似的文件,则会为我们提供警告,要求我们是否覆盖该文件。
可以使用'-i'参数。
请参阅以下语法:
cp -i [files_to_copy] [destination_directory] cp -i * /home/tuts/Desktop/theitroadTUTS/
与-i参数以交互方式复制文件
从上面的图像中,我们正在将文件从FOSLININUX目录复制到theitroadTUTS目录。
但是,由于theitroadtuts目录包含与源 - theitroad目录中类似的文件,因此我们会得到一个提示是否覆盖文件。
输入'y'是的,不为"n"。
6.使用CP用verbose(-v)选项复制文件。
与大多数Linux命令一样,我们可以使用verbose'v'选项使用cp命令。
请参阅以下语法:
cp -v [files_to_copy] [destination_folder] cp -v testFile5 UBUNTU/
用verbose选项复制文件
从上面的图像中,我们添加了详细参数'-v',它为我们提供了我们执行的操作的输出/报告。
我们还可以在一个命令中使用冗长和交互式参数,如下图所示。
语法如下:
cp -iv [files_to_copy] [destination_to_copy] cp -vi * /home/tuts/Desktop/theitroadTUTS/
使用冗长和交互式方法
7.使用CP递归复制目录及其内容。
要将目录复制到另一个目的地,我们需要使用TherorParameter,它代表'递归'。
语法如下:
cp [source_directory] [destination_directory] cp -R /home/tuts/Desktop/theitroad/* /home/tuts/Desktop/theitroadTUTS/
递归复制目录
从上面的图像中,我们已将theitroad目录的所有内容复制到theitroadTUTS目录。
当我们在theitroadtuts目录上运行ls命令时,我们会看到它具有与theitroad目录中的内容类似。
8.使用CP命令归档文件和目录。
使用CP命令,我们可以在将文件和目录复制到目标存储时归档。
我们使用-a参数。
语法如下: cp -a [files_to_copy] [destination_directory]
我们将仅在前一个示例中使用该命令我们将添加-a参数。 cp -a /home/tuts/Desktop/theitroad/* /home/tuts/Desktop/theitroadTUTS/
使用CP命令归档文件
9.仅复制新文件,而不是目标目录中的文件。
假设我们始终将文件的副本添加到另一个目录中,我们可以使用-u参数,该参数仅将最新文件复制到目标目标中的那些。
例如,我们在这里有两个目录,theitroad和theitroadtuts。
两者都有三个类似的文件 - testfile1 testfile2和testfile3.
我们在theitroad目录中更改了TESTFILE1,并使用-u和-v(verbose)参数将其复制到theitroadTUTS目录,并查看会发生什么。
请参阅以下语法: cp -u [source_directory] [destination_directory]
10.避免使用CP命令时覆盖现有文件。
在前面的示例中,我们使用-i(交互式)参数讨论,这会提示我们是否覆盖现有文件。
但是,如果我们不想覆盖任何文件,则使用-n参数存在更直接的方法。
请参阅以下语法: cp -n [files_to_copy] [destination_directory]
让我们看看下面的图像。
使用-n参数复制文件而无需过写入
在第一个命令中,我们使用了-i参数,这提示我们是否覆盖Testfile1.
在第二个命令中,我们使用了-n参数,它没有引发任何提示或者覆盖文件。
在处理许多文件时,它是一种有效的方法。
11.使用CP命令创建符号链接。
除了复制文件外,还可以使用CP命令创建符号链接。
我们将使用-s参数。
语法如下:
cp -s [Link_file] [Target_File] cp -s /home/tuts/Desktop/theitroad/testFile1 /home/tuts/Documents/
使用cp命令创建符号链接
如上图所示,我们使用桌面上的theitroad目录中的TESTFILE1创建了与文档目录的符号链接。
12.使用CP命令创建硬链接。
就像我们在上一个示例中创建了一个软链接一样,我们也可以使用CP命令创建硬链接。
我们将使用-l参数。
请参阅下图。
使用CP命令创建硬链接
与软链接不同,使用硬链接,源和链接文件具有相同的inode号。
让我们运行ls -l命令以验证。
13.使用CP命令复制文件/目录的属性。
我们可以使用CP命令仅复制文件的属性。
请参阅以下语法: cp [--attributes-only] [source_file] [destination_file]
仅复制属性 - 仅属于文件
从上面的图像中,我们将Testfile2的属性复制到theitroadtuts目录中的theitroadtuts目录。
当我们运行ls -l命令时,我们可以在theitroad目录中看到testfile2的大小为2773字节,而theitroadtuts目录中的复制的Testfile2具有零(0)字节。
这是因为只复制了文件的属性而不是内容。