1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > bat复制文件到指定目录同名_scp复制文件时排除指定文件

bat复制文件到指定目录同名_scp复制文件时排除指定文件

时间:2023-11-07 09:46:23

相关推荐

bat复制文件到指定目录同名_scp复制文件时排除指定文件

请关注本头条号,每天坚持更新原创干货技术文章。

如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习

1. 前言

本文主要讲解如何在scp复制文件时排除指定文件。

举例:

我需要将所有*.c文件从名为hostA的电脑复制到hostB,包括所有目录。我使用以下scp命令,但不知道如何排除特定的文件(如*.out):

scp -r ~/projects/ user@hostB:/home/123/

如何告诉scp命令在Linux/Unix复制文件时排除指定的文件或目录呢?

可以使用scp命令在网络上的主机之间安全地复制文件。它使用ssh进行数据传输和身份验证。典型的scp命令语法如下:

scp file1 user@host:/path/to/test/scp -r /path/to/source/ user@host:/path/to/test/scp [options] /dir/to/source/ user@host:/dir/to/test/

2. scp复制文件时排除指定文件

scp复制文件时排除指定文件

我不认为您可以在使用scp命令复制文件时可以过滤或排除文件。但是,有一个很好的解决方案可以排除文件并使用ssh安全地复制它。本教程解释如何在使用scp递归复制目录时过滤或排除指定文件。

如何使用rsync命令排除文件

它的语法是:

rsync -av -e ssh --exclude='*.out' /path/to/source/ user@hostB:/path/to/test/

解释一下上面的命令:

-a : 递归到目录,即复制所有文件和子目录。此外,打开存档模式和所有其他选项 (-rlptgoD)

-v : 详细输出

-e ssh : 使用ssh作为远程shell,以便对所有内容进行加密

--exclude='.out' : 排除匹配模式的文件,例如。out或*.c等等.

rsync命令的例子

在本例中,从~/virt/目录递归复制所有文件,但排除所有*.新文件:

rsync -av -e ssh --exclude='*.new' ~/virt/ root@centos7:/tmp

从~/virt/目录递归复制所有文件,但排除指定文件

如果在远程服务器上没有找到Rsync,则Rsync命令将失败。在这种情况下,尝试下面的scp命令,它在当前目录中使用bash shell模式匹配(它不会与-r选项一起工作):

ls

输出结果:

access.log-0218 access.log-0727 logip.new

复制当前目录中除.new文件外的所有内容:

shopt -s extglobscp !(*.new) root@centos7:/tmp/

输出结果:

access.log-0218 100% 4262 1.3MB/s 00:00

access.log-0727 100% 836MB 32.7MB/s 00:25

3. 理解extglob shell选项来排除使用scp和rsync的文件

如果使用shopt命令(build tin)启用extglob bash shell选项,Linux系统可以识别几个扩展的模式匹配操作符,如下所示:

OperatorsDescription?(pattern-list)匹配给定模式的零次或一次出现*(pattern-list)匹配给定模式的零次或多次出现+(pattern-list)匹配给定模式的一个或多个匹配项@(pattern-list)匹配给定的模式之一!(pattern-list)匹配除给定模式之一之外的任何内容

使用scp命令复制文件时怎么才能排除指定文件?

4. 总结

本教程向您展示了如何在Linux或类unix操作系统下的网络上的主机之间使用scp或者rsync命令复制文件时排除指定的文件。有关更多信息,请参阅以下手册页:

man 1 rsyncman bashman 1 scp

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。