将所有 csv 文件从远程计算机同步到本地计算机

将所有 csv 文件从远程计算机同步到本地计算机

我有一台服务器,里面有很多数据集定期更新的文件,/home/peter/data/*.csv.

我希望我的本地文件与远程同步。在我的 ssh 配置中,我设置了正确的用户名和主机。

我已经尝试过使用scp.目前我正在尝试:

rsync -e "ssh remote" -v --include='~/dat/*.csv'--include='*/' --exclude='*' . .

这没有任何作用。我得到:

skipping directory .

所有文件均未更新。

答案1

rsync不进行递归文件传输时(-r未使用),它将拒绝传输目录。

反而:

rsync -v remote:'data/*.csv' ./

这将从名为 的计算机上的主目录中的目录复制所有.csv文件。文件将被传输到本地主机上的当前目录。dataremote

要像在远程文件上设置一样在本地文件上设置权限、时间戳等,请添加--archive( -a) 选项:

rsync -va remote:'data/*.csv' ./

-a标志意味着-r还有一堆其他标志 ( -rlptgoD),但-r这里并未真正使用该标志,因为您是从单个目录获取文件。要使用具体的设置本地权限和时间戳的标志,请使用--perms( -p) 和--times( -t) 代替。

答案2

根据man rsync你需要的-a标志

-a, --archive  archive mode; equals -rlptgoD (no -H,-A,-X)

rsync -e "ssh remote" -av ....

细节

-r, --recursive             recurse into directories
-l, --links                 copy symlinks as symlinks
-p, --perms                 preserve permissions
-t, --times                 preserve modification times
-g, --group                 preserve group
-o, --owner                 preserve owner (super-user only)
-D, --devices --specials    preserve devices and special files

相关内容