Linux scp 与 rsync 详解
Linux scp 与 rsync 详解
·
叙述
scp
scp
命令用于在本地主机和远程主机之间安全地复制文件和目录。它基于SSH协议提供加密的网络传输。
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
选项:
-P port
:指定SSH端口。-p
:保留原始文件的修改时间、访问时间和访问权限。-r
:递归复制整个目录。
# 从本地复制文件到远程主机
scp /path/to/local/file.txt user@remote_host:/path/to/remote/directory
# 从远程主机复制文件到本地
scp user@remote_host:/path/to/remote/file.txt /path/to/local/directory
# 使用特定端口复制文件
scp -P 2222 /path/to/local/file.txt user@remote_host:/path/to/remote/directory
# 递归复制目录
scp -r /path/to/local/directory user@remote_host:/path/to/remote/directory
rsync
rsync
命令用于同步文件和目录,它具有更多的特性,如增量备份、保留符号链接、优化数据传输等。
rsync [OPTION]... SRC [SRC]... [user@]DEST
选项:
-a:归档模式,等同于-rlptgoD(递归、保留链接、保留权限、保留时间戳、保留组、保留所有者、保留设备文件)。
-v:详细模式,显示传输过程。
-z:压缩文件数据。
-e:指定远程shell,如使用不同于默认的SSH端口。
--delete:删除目的地中存在而源中不存在的文件(谨慎使用)。
# 本地同步目录到远程主机
rsync -avz /path/to/local/directory/ user@remote_host:/path/to/remote/directory
# 从远程主机同步目录到本地
rsync -avz user@remote_host:/path/to/remote/directory/ /path/to/local/directory
# 使用非标准SSH端口同步
rsync -avz -e 'ssh -p 2222' /path/to/local/directory/ user@remote_host:/path/to/remote/directory
# 同步时删除目的地中多余的文件
rsync -avz --delete /path/to/local/directory/ user@remote_host:/path/to/remote/directory
总结
rsync
在目录路径末尾的斜杠/
有特殊的含义:如果加上斜杠,表示同步目录内的内容;如果不加斜杠,表示同步目录本身。- 使用
--delete
选项时要特别小心,以免误删除重要文件。
scp
简单易用,适合快速的文件传输任务。而rsync
更适合执行复杂的同步任务,尤其是定期备份和镜像。rsync
在处理大量数据时更加高效,因为它只同步变化的部分。
更多推荐
所有评论(0)