如何 scp 大小小于 x 的文件?

iam*_*max 15 command-line scp

我正在我的笔记本电脑上开发一些东西,并将文件 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)