递归复制时跳过隐藏文件和目录
摘要
在 Linux 命令行中,cp -r 可能是我们想要递归复制目录时首先出现的命令。点文件被理解为在 Linux 中充当隐藏文件。在递归复制目录时,我们偶尔会从目录中排除隐藏文件和目录。
在本教程中,我们将学习如何做到这一点。
注意 - Linux 命令区分大小写。
SCP 命令
使用命令行工具 SCP(安全复制),您可以安全地在两个位置之间移动文件和目录。我们可以使用 scp 将文件或目录从本地系统复制到远程系统,从远程系统复制到本地系统,以及在两个远程系统和您的本地系统之间复制。
运行以下命令将文件从本地系统复制到远程系统:
$ scp script.txt [email protected]:/remote/directory
输出
[email protected]'s password: script.txt 100% 0 0.0KB/s 00:00
这里我们想要复制的文件名为“script.txt”,远程服务器上的用户为 tutorials,服务器的 IP 地址为 10.9.0.8。您希望将文件复制到的目录的路径位于 /remote/directory 字段中。如果未指定远程目录,则文件将被复制到远程用户的 home 目录。
rsync 命令
一个有用的 Linux 命令行实用程序,用于复制和同步文件和目录,称为 rsync。该实用程序可用于在两台远程计算机之间或本地在目录和磁盘之间同步数据。
在 Linux 中,基本的 rsync 命令会同步您指定位置的所有内容。在许多备份场景中,您可能希望排除特定的文件、文件夹或文件类型。
我们可以指示 -exclude 选项通过传递“.*”模式来忽略隐藏文件和目录。我们应该指出,在这种情况下,“.*”模式不是正则表达式。相反,它表示任何以点开头的目录或文件名。
在下面的示例中,我们将递归地从 ~/sample/ 目录复制所有文件,但排除所有 *.backup 文件:
$ rsync -av -e ssh --exclude='*.backup' ~/sample/ root@fedora:/tmp
输出
sending incremental file list images/ images/fedora/user-data images/fedora/meta-data images/fedora/ sent 1,145,974,357 bytes received 137 bytes 45,904,896.00 bytes/sec total size is 1,145,674,357 speedup is 1.00
如您在上面看到的输出,所有文件都已递归复制,并且不包含“.backup”文件。
结论
在本教程中,我们学习了一些关于如何在 Linux 中递归复制时跳过隐藏文件和目录的示例。在本文中,我们讨论了如何在省略隐藏文件和目录的情况下递归复制目录。
复制所有内容然后删除隐藏项的方法很简单。但是,它可能会导致安全漏洞和性能问题。任何 Linux 用户都可以快速修复此问题。请随意尝试 Linux 提供的任何方法来解决此问题,以消除此错误。上述过程适用于各种 Linux 发行版。所有操作系统都必须将文件描述符作为基本元素。
希望您发现这些命令示例有用。