我有一台服务器,里面有很多数据集定期更新的文件,/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
文件。文件将被传输到本地主机上的当前目录。data
remote
要像在远程文件上设置一样在本地文件上设置权限、时间戳等,请添加--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