当前位置: 首页 > 科技观察

如何使用CP-SCP-RSYNC在Linux中排除特定目录?

时间:2023-03-22 15:11:47 科技观察

介绍在服务器之间执行文件复制操作是任何系统管理员或一般Linux操作系统用户的常见任务。将文件从一个系统复制到另一个系统时,由于某些特定原因,我们可能需要将某些文件和目录排除在复制之外。即使在同一系统上将数据从一个位置传输到另一个位置时,这也可能适用。在本文中,我们将演示如何排除特定文件或目录,或使用三种最常见和广泛使用的实用程序来复制它们,即rsync、cp和scp。使用cp命令排除特定文件/目录被复制:考虑以下场景,我的当前工作目录中有五个目录。[root@linuxnixtmp]#ls-lddir*drwxr-xr-x2rootroot6Aug2922:47dir1drwxr-xr-x2rootroot71Aug2922:47dir2drwxr-xr-x2rootroot6Aug2922:47dir3drwxr-xr-x2rootroot6Aug2922:47dir4drwxr-xr-x2rootroot6Aug2922:47dir5我想复制以名称dir开头的所有目录,除了dir2目录,那么你可以执行以下操作:[root@linuxnixtmp]#cp-r`ls-A|grepdir|grep-v"dir2"`/tmp/sahil/这将复制除dir2目录之外的所有内容.如果我们需要复制所有目录并跳过个别目录,我们可以运行以下命令。[root@linuxnixtmp]#cp-r!(dir2)/sahil当前工作目录中的所有目录和子目录都将被复制到/sahil,目录dir2除外。同样,如果我们想从当前工作目录中复制除一个文件以外的所有文件,我们将键入以下内容[root@linuxnixdir2]#cp-r!(file3)/sahil在上面的示例中,当前工作目录中的所有文件文件都被复制到/sahil,除了名为file3的文件。使用scp命令排除特定文件/目录被复制:scp中的数据排除机制类似于之前使用cp命令演示的机制。下面是一个例子。上面的命令复制了当前工作目录中的所有文件,除了名为file4的文件。[root@linuxnixdir2]#scp-rp!(file4)192.168.19.142:/sahilfile1100%00.0KB/s00:00file2100%00.0KB/s00:00file3100%00.0KB/s00:00file5100%00.0KB/s00:00[root@linuxnixdir2]#使用rsync命令将特定文件/目录排除在复制之外:在用于复制文件的命令集中,最灵活的是rsync命令。在本文中,我们将讨论的范围限制在排除某些文件/目录被复制的功能上。要使用rysnc命令复制文件或文件夹,请使用--exclude标志,如以下示例所示。[root@linuxnixtmp]#rsync-av--progress--exclude="dir2"dir*/sahilsendingincrementalfilelistdir1/dir3/dir4/dir5/sent82bytesreceived28bytes220.00bytes/sectotalsizeis0speedupis0.00[root@linuxnixtmp]#cd/sahil/[root@linuxnixsahil]#ls-ltotal0drwxr-xr-x2rootroot6Aug2922:47dir1drwxr-xr-x2rootroot6Aug2922:47dir3drwxr-xr-x2rootroot6Aug2922:47dir4drwxr-xr-x2rootroot6Aug2922:47dirde复制文件时也可以远程使用标记ah.ilex这是一个例子:[root@linuxnixtmp]#rsync-av--progress--exclude="dir2"dir*192.168.19.142:/sahilsendingincrementalfilelistdir1/dir3/dir4/dir5/sent82bytesreceived28bytes220.00bytes/sectotalsizeis0speedmpis0.00[root]#结论我们对如何在使用cp、scp和rsync命令时排除某些内容被复制的演示到此结束。希望这篇文章对你有所帮助。