如何在 Linux 中复制文件和目录

2023-11-01

复制文件和目录是使用命令行时最常见的任务之一。 Linux 中有多种用于复制文件的命令,其中cp and rsync是使用最广泛的工具。

通常的做法是使用cp复制文件的命令和rsync复制目录。

为了能够复制文件和目录,您必须至少具有源文件的读取权限和目标目录的写入权限。

复制文件cp命令#

在 Linux 和 Unix 操作系统上,cp命令用于复制文件和目录。

最简单的用例是复制当前工作目录中的文件。例如,要复制名为file.txt到一个名为file_backup.txt in 当前目录,您将运行以下命令:

cp file.txt file_backup.txt

如果目标文件存在,它将被覆盖。要在覆盖文件之前获得确认提示,请使用-i option.

cp -i file.txt file_backup.txt

默认情况下,当使用cp命令复制文件,新文件将由执行该命令的用户拥有。使用-p保留文件模式的选项,所有权 , and 时间戳 :

cp -p file.txt file_backup.txt

另一个有用的选项是-v。使用此选项时,该命令会打印正在执行的操作:

cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'

将文件复制到目录#

要将文件复制到目录,请指定该目录的绝对路径或相对路径。当省略目标目录时,文件将复制到当前目录。

在下面的示例中,我们复制文件file.txt to the /backup目录:

cp file.txt /backup

仅指定目录名称作为目标时,复制的文件将与原始文件具有相同的名称。

如果要以不同的名称复制文件,则需要指定所需的文件名:

cp file.txt /backup/new_file.txt

上面的命令将把文件复制到指定目录new_file.txt.

复制多个文件#

要一次复制多个文件和目录,请指定源文件和目录的名称,后跟目标目录作为最后一个参数:

cp file.txt dir file1.txt file2.txt dir1

复制多个文件时,目标必须是目录。

The cp命令还允许您使用模式匹配。例如,复制所有.png将文件从当前目录移动到/backup目录,您将使用:

cp *.png /backup

复制目录cp命令#

要复制目录,包括其所有文件和子目录,请使用-R or -r选项。在下面的示例中,我们复制目录Pictures to Pictures_backup:

cp -R Pictures Pictures_backup

上面的命令将创建目标目录,并递归地将所有文件和子目录从源目录复制到目标目录。

如果目标目录已存在,则源目录本身及其内容将复制到目标目录。要仅复制文件和子目录而不复制目标目录,请使用-T option:

cp -RT Pictures Pictures_backup

复制文件时使用的选项也可以在复制目录时使用。主要区别在于,复制目录时,需要使用-R option.

使用复制文件和目录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将把源目录复制到目标目录中。最安全的选择始终是包含尾部斜杠/在目的地和来源上。

要了解更多信息rsync检查以下文章:

  • 如何使用rsync进行本地和远程数据传输和同步
  • 如何使用 Rsync 排除文件和目录

结论#

我们向您展示了如何在 Linux 和基于 Unix 的系统中复制文件和目录,使用cp and rsync公用事业。

如果您有任何疑问,请在下面留言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Linux 中复制文件和目录 的相关文章

  • sudo bang bang 到底是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 sudo bang bang 的目的是什么 sudo 什么时候可能需要使用它 砰砰砰 命令是一个快捷方式重复您在终端中输入的上一个命令 当您忘记需要管
  • pty 和管道之间的区别

    我一直在从本页的示例中阅读有关 ptys 的内容 http www roucha fr tech corner pty pdip html http www rkoucha fr tech corner pty pdip html 我有两个
  • 如何强制 rsync 创建目标文件夹

    Example rsync tmp fol1 fol2 fol3 foln user addr tmp fol1 fol2 fol3 foln 我的主要问题是远程计算机上不存在文件夹 tmp fol1 我可以使用哪些参数来强制 rsync
  • 在 VSCode 中每次保存时运行 rsync

    我的本地系统上有一个存储库 并正在远程服务器上测试我的更改 我正在使用 VSCode 进行开发 我希望每次保存时 rsync 都应在后台运行 并将当前本地文件中的更改与远程同步 我如何使用 VSCode 实现这一目标 我在用保存并运行 ht
  • macOS 上的 Bash - 获取给定年份每个星期六的日期列表

    In bash on macOS 我想写一个小脚本dates 或任何其他可以做的程序 它给我一个格式的日期列表yyyymmdd给定年份的每个星期六并将其保存到变量中 例如 如果我想要 1850 年所有星期六的日期列表 它应该看起来像这样 v
  • 为什么使用 $PATH 以及它是什么

    我对编程有点陌生 不是真的 但我仍在学习 我们不是吗 虽然我了解 Java 和 Python 并且了解 C C JS C HTML CSS 等 并且我可以在终端中很好地导航 但我不熟悉终端中的 PATH 是什么 我使用 Linux 终端和
  • 使用 RSYNC,包含和排除如何组合?

    我想 rsync Volumes B 中的所有内容 除了缓存目录 我想全局排除它 另外 我不想同步任何其他 Volume 我有以下排除文件 Volumes B Cache Volumes 第一行和第三行似乎工作正常 除了 rsync 还拾取
  • aria2c - 有什么办法只保留失败下载的列表吗?

    我在用aria2c下载以文本文件形式组织的相当大的 url 列表 6000 基于此gist https gist github com jonbakerfish 0f7877c050b648169e0958ea2e2c6aca 我使用以下脚
  • unix下C++递归复制目录

    没有任何可供使用的功能示例c without additional libs将递归文件和文件夹复制到新位置 一些替代方案system cp R f dir call 我只找到这个C 中的递归目录复制 https stackoverflow
  • 使用通配符在 .zshrc 中获取多个文件

    我通过 oh my zsh 使用 z shell 我想从 zshrc 文件中获取多个别名文件 这样我就可以让事情井井有条 我已经为别名文件添加了前缀 alias 这样我就可以通配符加载它们 但是 打电话给source alias 只加载第一
  • 我忘记了分号“;”在 MySQL 终端查询中。我该如何退出?

    有时我忘记用分号 结束 SQL 查询 在我的 Mac 终端中 发生这种情况时 终端会设置一个 gt 一开始我无法退出此命令或运行任何其他 SQL 命令 我该如何退出 你不知道mysql终端有5种不同的报价模式 我建议你回顾一下它们 http
  • 使用终端将信息输入 Javascript

    我想获取 C 程序的输出并将其输入到 javascript 文件的标准输入中 但是我无法使用该方法将任何内容推送到标准输入中 node example js lt test txt 因为我收到以下错误 示例 js 35 stdin setR
  • 安装 oAuth PECL 错误:无法安装,当前用户无法写入频道“pecl.php.net”的 php_dir

    我尝试在 OS X 上安装 oAuth 但在终端中收到此错误 无法安装 当前用户无法写入频道 pecl php net 的 php dir 我如何让它可写 首先找出php dir在哪里 您可以使用 config get 命令来执行此操作 p
  • 无法打开本地终端

    我尝试在 Android Studio 中初始化我的终端 但它给了我错误 它说 无法打开本地终端 java io IOException 无法创建 PTY 我的电脑运行的是 Windows 10 如何解决这个问题 当您从 Github 存储
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • 从 pod 安装库时出现错误

    我收到未定义的方法squish for
  • 如何在 Xamarin.Mac 中执行终端命令并读入其输出

    我们正在编写一个 Xamarin Mac 应用程序 我们需要执行像 uptime 这样的命令 并将其输出读取到应用程序中进行解析 这可以做到吗 在 Swift 和 Objective C 中都有 NTask 但我似乎无法在 C 中找到任何示
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 在谷歌云上训练神经网络时出现“无法获取路径的文件系统”错误

    我正在使用 Google Cloud 在云上训练神经网络 如下例所示 https cloud google com blog big data 2016 12 how to classify images with tensorflow u
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用

随机推荐

  • gitlab安装,跑配置报错NoMethodError: undefined method 'zero?' for nil:NilClass

    安装gitlab 报错 There was an error running gitlab ctl reconfigure ruby block authorize Grafana with Gitlab monitoring grafan
  • 【AI】即使AI 时代,程序员也无需焦虑

    欢迎来到本文 个人简介 陈童学哦 目前学习C C 算法 Python Java等方向 一个正在慢慢前行的普通人 系列专栏 陈童学的日记 其他专栏 C STL 感兴趣的小伙伴可以看看 希望各位 点赞 收藏 留言 万物从心起 心动则万物动 Ch
  • 如何在 Ubuntu 20.04 上安装 IntelliJ IDEA

    智能IDEA是一种流行的 Java 应用程序集成开发环境 它由 JetBrains 开发 IntelliJ IDEA 由于其易于完成代码和检查 因此对初学者来说一定更友好 基本上 它还为许多其他语言 例如 SQL JPQL HTML Jav
  • 如何在 Ubuntu 20.04 中创建仅 SFTP 用户

    SFTP SSH 文件传输协议 是一种安全文件协议 用于通过加密的 SSH 传输会话访问 管理和传输文件 安全第一是系统管理员的经验法则 有时 您可能需要向开发或其他团队提供 FTP SFTP 访问权限 以访问远程服务器上的文件 这将为您提
  • 如何使用 Let's Encrypt SSL 保护 Tomcat

    Let s Encrypt 是一家证书颁发机构 提供用于 Web 应用程序的有效 SSL 证书 它免费为每个人提供证书 但有一些限制 安全第一应该成为任何组织保护您辛勤工作的代码免受黑客攻击的经验法则 当通过公共网络传输应用程序数据时 它变
  • 什么是RAID存储技术

    RAID是廉价磁盘冗余阵列的缩写 但随着世界变得数字化 效率和成功达到顶峰 它被重命名为独立磁盘冗余阵列 负责以完整的协议存储您的宝贵数据 并为您提供具有一般或传统存储设备可能无法实现的容错功能 为什么要使用RAID 当 RAID 领域的工
  • 如何检查您的业务网络是否防御不力

    Summary 您最后一次检查业务网络是否存在缺陷和漏洞是什么时候 如果时间太长 现在可能就有危险了 请继续阅读以了解执行快速测试的方法 Details 如今 任何组织 无论大小 都无法逃脱黑客的攻击 如果您拥有一家企业 就不能没有万无一失
  • Java程序检查回文数

    A 回文数是一个即使数字顺序颠倒也保持不变的数字 例如 121 12321 1001等都是回文数的例子 在本文中 我们将探讨如何使用 Java 程序检查数字是否为回文数 概念概述 为了确定一个数字是否是回文 我们将原始数字与其相反的版本进行
  • 了解 Terraform 提供商

    Terraform 是 HashiCorp 开发的开源基础设施即代码软件 使用户能够使用声明性配置语言定义和提供数据中心基础设施 其运作机制的关键是概念 提供者 它们是 Terraform 基于插件的架构的组成部分 在本文中 我们将探讨 T
  • 什么是本地主机?

    在计算机网络中 术语 本地主机 指当前用于访问它的设备 它用于通过环回网络接口访问主机上运行的网络服务 使用环回接口绕过任何本地网络接口硬件 期限 本地主机 是由单词的组合衍生而来 local and host 这个单词 local 指的是
  • 如何通过 SSH 使用 Nagios 监控远程 Linux 系统

    NRPE是使用 Nagios 服务器监控远程 Linux 系统的最流行方法 但在某些情况下 我们不想在远程系统上安装 NRPE 或者无法安装它 在这种情况下 几乎没有其他方法可以监视远程系统 在本教程中 我们将描述通过 ssh 检查 met
  • 如何在 Ubuntu 22.04 上安装 Anaconda

    Anaconda 是一个用于 R 编程和 Python 的开源平台 其中包含各种各样的包和存储库 它的功能很重要 因为它提供大规模的处理和计算数据 并且还可以用Python语言进行编程 Anaconda 为 python 应用程序提供了一个
  • 如何在 Ubuntu 20.04 上安装 Docker Compose

    Docker compose 是管理多个 docker 容器的有用工具 它帮助我们使用单个命令启动 更新和构建一组 docker 容器 在多容器应用程序的情况下 docker compose帮助我们更轻松地管理它 本教程帮助您在 Ubunt
  • 构建第一个 RPM 包的初学者指南

    如果您正在开始 Linux 世界的旅程并选择了红帽生态系统 那么您需要掌握的基本技能之一就是创建 RPM 软件包 本指南将逐步引导您完成整个过程 帮助您了解 RPM 打包以及如何构建自己的 RPM 包 即使作为初学者也是如此 什么是 RPM
  • Linux 中的 Pstree 命令

    在 Linux 计算机上工作时 有时您可能需要了解当前正在运行哪些进程 您可以使用许多命令来查找有关正在运行的进程的信息 其中ps and top是最常用的 在这篇文章中 我们将讨论pstree命令 它类似于ps 但它不是列出正在运行的进程
  • 如何在 Ubuntu 18.04 上安装 Asterisk

    Asterisk 是最流行和广泛采用的开源 PBX 平台 为 IP PBX 系统 会议服务器和 VoIP 网关提供支持 它被世界各地的个人 小型企业 大型企业和政府使用 Asterisk 功能包括语音邮件 等待音乐 电话会议 呼叫排队 通话
  • 如何在 Ubuntu 20.04 上安装 PHP 8

    PHP 是最广泛使用的服务器端编程语言之一 许多流行的 CMS 和框架 例如 WordPress Magento 和 Laravel 都是用 PHP 编写的 PHP 8 0 是 PHP 语言的最新主要版本 它引入了一些重大变化 性能改进以及
  • 如何在 Debian 9 上安装 MariaDB

    MariaDB 是一个开源 多线程关系数据库管理系统 向后兼容 MySQL 的替代品 它由以下机构维护和开发MariaDB基金会包括MySQL的一些原始开发人员 随着 Debian 9 的发布 MySQL 被 MariaDB 取代作为默认数
  • 如何在 Ubuntu 18.04 上安装 R

    R 是一种快速发展的开源编程语言和免费环境 专门从事统计计算和图形表示 它由 R 统计计算基金会支持 主要供统计学家和数据挖掘人员用于开发统计软件和执行数据分析 本教程将指导您完成在 Ubuntu 18 04 计算机上安装 R 的步骤 先决
  • 如何在 Linux 中复制文件和目录

    复制文件和目录是使用命令行时最常见的任务之一 Linux 中有多种用于复制文件的命令 其中cp and rsync是使用最广泛的工具 通常的做法是使用cp复制文件的命令和rsync复制目录 为了能够复制文件和目录 您必须至少具有源文件的读取