scp 复制如何不把软连接的内容复制呢?
在使用scp时,如果你不想将软链接指向的实际内容复制过来,只需要加上-r参数,但,即直接复制符号链接本身。
在使用 scp 时,如果你不想将软链接指向的实际内容复制过来,只需要加上 -r 参数,但 不跟随符号链接,即直接复制符号链接本身。为此,可以使用以下方法:
方法 1:只复制符号链接本身(本地拷贝有效)
直接在 scp 命令中加上 -r 参数,同时注意源路径中包含软链接。示例如下:
scp -r /path/to/symlink /path/to/destination
如果只是文件名或者符号链接(非解开实际内容),这可以直接生效。
方法2: rsync
rsync 是一个强大的工具,用于高效同步和复制文件和目录。它支持局部更新、增量传输和各种复杂的配置选项,非常适合用于备份和文件同步任务。
常见的 rsync 用法
1. 基本用法
将文件从源目录同步到目标目录:
rsync -av /source/path/ /destination/path/
-a:归档模式,保持文件权限、时间戳、符号链接等。-v:显示详细信息。
注意:结尾的
/很重要:
/source/path/:同步目录中的内容,不包括目录本身。/source/path:同步目录及其内容。
2. 同步到远程主机
可以使用 ssh 与远程主机通信:
rsync -av /source/path/ user@remote:/destination/path/
或者从远程主机同步到本地:
rsync -av user@remote:/source/path/ /local/destination/
3. 只复制软链接本身
默认情况下,rsync 会跟随软链接,复制其指向的实际内容。如果你只想复制软链接本身,可以加上 -l 选项:
rsync -av -l /source/path/ /destination/path/
4. 删除目标中多余的文件
如果希望目标目录完全匹配源目录,可以使用 --delete 选项:
rsync -av --delete /source/path/ /destination/path/
这会删除目标目录中源目录中没有的文件。
5. 排除特定文件或目录
使用 --exclude 选项排除特定文件或目录:
rsync -av --exclude 'file_or_dir_to_exclude' /source/path/ /destination/path/
例如,排除 tmp 文件夹:
rsync -av --exclude 'tmp/' /source/path/ /destination/path/
6. 显示进度
加上 --progress 选项可以在传输过程中显示进度:
rsync -av --progress /source/path/ /destination/path/
高级用法
1. 带带宽限制的传输
如果网络较慢,可以限制传输速度(单位为 KB/s):
rsync -av --bwlimit=1000 /source/path/ /destination/path/
2. 仅同步更新的文件
默认情况下,rsync 会检查文件时间戳和大小。如果你只想同步更新的文件,可以这样用:
rsync -av --update /source/path/ /destination/path/
3. 同步部分目录结构
可以使用 --include 和 --exclude 来选择性同步文件:
rsync -av --include '*/' --include '*.txt' --exclude '*' /source/path/ /destination/path/
这个命令只同步 .txt 文件及其父目录。
检查而不实际执行
rsync 提供 --dry-run 选项,用于模拟同步而不真正执行。非常适合在操作前验证:
rsync -av --dry-run /source/path/ /destination/path/
常用组合
将本地文件同步到远程服务器并删除多余的文件:
rsync -azv --delete /local/path/ user@remote:/remote/path/
从远程服务器拉取文件,排除特定目录:
rsync -azv --exclude 'logs/' user@remote:/remote/path/ /local/path/
更多推荐


所有评论(0)