如何在Linux中复制文件和目录
复制文件和目录是在命令行上执行时最常见的任务之一。
在Linux中,有几个用于复制文件的命令,其中'cp'和'rsync'是使用最广泛的工具。
通常的做法是在复制文件时使用“ cp”命令,在复制目录时使用“ rsync”命令。
为了能够复制文件和目录,我们必须至少具有对源文件的读取权限和对目标目录的写入权限。
使用“ cp”命令复制文件
在Linux和Unix操作系统上,“ cp”命令用于复制文件和目录。
最简单的用例是将文件复制到当前工作目录中。
例如,要将名为“ file.txt”的文件复制到当前目录中名为“ file_backup.txt”的文件,我们将运行以下命令:
cp file.txt file_backup.txt
如果目标文件存在,它将被覆盖。
要在覆盖文件之前获得确认提示,请使用“ -i”选项。
cp -i file.txt file_backup.txt
默认情况下,使用“ cp”命令复制文件时,执行该命令的用户将拥有新文件。
使用'-p'选项保留文件模式,所有权和时间戳:
cp -p file.txt file_backup.txt
另一个有用的选项是'-v'。
使用此选项时,命令将显示正在执行的操作:
cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'
将文件复制到目录
要将文件复制到目录,请指定目录的绝对或者相对路径。
如果省略目标目录,则文件将复制到当前目录。
在以下示例中,我们将文件“ file.txt”复制到“/backup”目录:
cp file.txt /backup
如果仅将目录名称指定为目标,则复制的文件将与原始文件具有相同的名称。
如果要使用其他名称复制文件,则需要指定所需的文件名:
cp file.txt /backup/new_file.txt
上面的命令会将文件复制为'new_file.txt'到指定目录。
复制多个文件
要一次复制多个文件和目录,请指定源文件和目录的名称,后跟目标目录作为最后一个参数:
cp file.txt dir file1.txt file2.txt dir1
复制多个文件时,目标位置必须是目录。
cp命令还允许我们使用模式匹配。
例如,要将所有“ .png”文件从当前目录复制到“/backup”目录,可以使用:
cp *.png /backup
使用“ cp”命令复制目录
要复制目录,包括其所有文件和子目录,请使用'-R'或者'-r'选项。
在以下示例中,我们将目录“ Pictures”复制到“ Pictures_backup”:
cp -R Pictures Pictures_backup
上面的命令将创建目标目录,并将所有文件和子目录从源递归复制到目标目录。
如果目标目录已经存在,则源目录本身及其所有内容将被复制到目标目录。
要仅复制文件和子目录而不复制目标目录,请使用“ -T”选项:
cp -RT Pictures Pictures_backup
复制文件时使用的选项也可以在复制目录时使用。
主要区别在于复制目录时,需要使用“ -R”选项。
使用“ rsync”命令复制文件和目录
“ rsync”是一种快速且通用的命令行工具,可在两个位置之间同步文件和目录。
它可用于将文件复制到本地和远程位置。
“ rsync”包括许多控制其行为各个方面的选项。
最有用的选项是“ -a”,它以递归方式复制目录,传输特殊设备和块设备,保留符号链接,修改时间,组,所有权和权限。
要将单个文件从一个文件复制到另一个位置,请运行以下命令:
rsync -a file.txt file_backup.txt
如果目标文件存在,“ rsync”将覆盖它。
可以使用相同的命令来复制目录:
rsync -a /var/www/public_html//var/www/public_html_backup/
'rsync'威胁以尾部反斜杠'/'结尾的源目录。
如果在源目录上添加斜杠,该命令将仅将源目录的内容复制到目标目录。
当省略斜杠时,“ rsync”将复制源目录到目标目录中。
最安全的选择是始终在目标和源上都包含斜杠“ /”。