包含/排除“scp -r”的文件

假设本地文件夹如下所示:

/test/subfolder /test/subfolder/file1.txt /test/subfolder/page1.htm /test/subfolder/page2.htm /test/.hiddenfolder /test/./hidenfolder/file2 
  1. 如何在执行“scp -r test user @ ip:/”时排除要传输的.hiddenfolder?

  2. 如何仅包含* .htm文件并将它们传输到远程服务器上的相应子文件夹?

  3. 任何其他命令可以更轻松地完成这项工作?

我不认为独自一人可以做你所要求的。 您应该调查rsync。

我使用它进行备份,并使用筛选器排除名称不适用于NTFS卷的文件

 # the exclude is to filter out files with invalid names on NTFS /usr/bin/rsync -rgqoxD --delete --exclude='*[:\?]*' /home/andrewr/src /filer001/syncd/src 

你也可以传递一个包含要排除的文件的文件的名字( --exclude-from=file

编辑 :这是一个示例命令行,适用于您的示例:

 cd src; find . -type f -name "*.htm" | rsync -av --files-from=- . host:dir 

如果你已经有了预共享​​的ssh密钥,你可以先用下面的方法创build所有的远程目录:

 # get all directories in this tree for DIR in `find . -type d` do # create remote directory ssh user@host mkdir -p /path/to/start/$DIR # copy *only* *.htm files scp $DIR/*.htm user@host:/path/to/start/$DIR done 

我想这是关于你在找什么。