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