我正在笔记本电脑上开发一些东西,并将文件复制到高性能 PC(没有显示器的服务器)。出于懒惰,我目前只这样做(在笔记本电脑上):
scp -r ~/project/* server:~/project/
但是项目目录中的一些文件是一些日志文件和输出文件,我不需要发送,有时可能达到千兆字节左右。我想要一个干净的命令,它基本上做同样的事情(传输项目及其子目录中的所有文件),但只发送特定文件大小阈值以下的文件,例如 100 mb。我对 bash 只略有经验,对 regexp 则一无所知,所以我真的不知道如何在不使用一些复杂的方法的情况下做到这一点,例如将 sys 导入 python 并使用一堆 if 和比较。
答案1
您可以使用“rsync”命令,该命令有一个选项可以控制要排除的文件大小。
rsync -rv --max-size=100m /path/in/local/ server:~/project/
从 'rsync 命令',
--max-size=SIZE don't transfer any file larger than SIZE
更新答案:只需使用“rsync”--exclude 选项排除日志文件,如下所示
rsync -rv --exclude='*.log' --max-size=100m /path/in/local/ server:~/project/
或者您可以将“find”命令与“scp”组合使用,并使用其-size
选项指定文件大小限制。用于! -name '*.log'
排除以“log”结尾的某些文件。
find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;