Linux复制命令cp

时间:2020-02-23 14:37:35  来源:igfitidea点击:

作为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)字节。
这是因为只复制了文件的属性而不是内容。