假设本地文件夹如下所示:
/test/subfolder /test/subfolder/file1.txt /test/subfolder/page1.htm /test/subfolder/page2.htm /test/.hiddenfolder /test/./hidenfolder/file2
如何在执行“scp -r test user @ ip:/”时排除要传输的.hiddenfolder?
如何仅包含* .htm文件并将它们传输到远程服务器上的相应子文件夹?
任何其他命令可以更轻松地完成这项工作?
我不认为独自一人可以做你所要求的。 您应该调查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
我想这是关于你在找什么。