目录
一、在系统间安全地传输文件:
1、使用安全复制协议( RCP协议 )传输文件:
Secure Copy 命令 scp 是 OpenSSH 套件的一部分,可将文件从远程系统复制到本地系统或从本地系统复制到远程系统。此命令利用 SSH 服务器进行身份验证,并在数据传输之前对其进行加密。
scp -r 选项可传输目录。
注:scp 命令被广泛用于将文件复制到远程系统或从远程系统中复制文件,此命令基于历史悠久的 rcp 协议。
但 rcp 协议在设计时并未考虑安全因素,以至于 scp 命令存在一个已知的代码注入问题,可能会赋予攻击者在远程服务器上执行任意命令的能力。
2、使用安全文件传输程序( SFTP )传输文件:
OpenSSH 套件可以在远程系统上安全的运行 shell 命令,使用 sftp 命令将以交互方式从 SSH 服务器上上传或下载文件。安全文件传输程序是 OpenSSH 套件的一部分,类似于 ftp 软件的操作,但其传输基于 SSH 身份验证与加密,并将数据加密后再与 SSH 服务器进行来回传输。
交互式 sftp 会话可接受各种命令,在完成连接后,可以使用:ls 、cd 、mkdir 、pwd 、put(将本地文件上传) 、get(下载文件到本地) 命令控制文件系统。
注:在 sftp 会话中,需要在本地主机运行的命令前需添加 l 字符。
例如,pwd 命令将显示远程主机上的当前工作目录,但 lpwd 命令将显示本地主机上的当前工作目录。
使用 exit 命令退出 sftp 会话。
注:(1)无法使用单一命令行将文件放到远程主机上;
(2)但若在单个命令行中使用 sftp 命令则可远程获取文件,而不打开交互式会话。
二、在系统间安全地同步文件:
1、rsync :
rsync 命令是在系统之间安全复制文件的另一种方式。此工具采用的算法可通过仅同步文件已更改的部分将复制的数据量最小化。
注:(1)rsync 命令仅复制文件系统间的差异部分,而 scp 命令将复制目录或文件的所有内容;
(2)rsync 的 -n 选项为模拟运行,此时显示需要同步的文件清单,但并不真正同步。
rsync 命令的两个重要选项如下:
(1)-v (--verbose):
rsync 命令的 -v 或 --verbose 选项可提供更详细的输出,常用于故障排除与查看实时进度。
(2)-a(--archive):
rsync 命令的 -a 或 --archive 选项将启用 “ 存档模式 ” ,可以实现递归复制并开启众多选项,以保留文件的大部分特征。
通过 rsync -a 启用的选项如下:
选项 | 描述 |
---|---|
-r( --recursive ) | 以递归的方式同步整个目录树 |
-l( --links ) | 同步符号链接 |
-p( --perms ) | 保留权限 |
-t( --times ) | 保留时间戳 |
-g( --group ) | 保留组的所有权 |
-o( --owner ) | 保留文件的所有者 |
-D( --devices ) | 同步设备文件 |
注:1)存档模式并不会保留硬链接(保留硬链接会大幅度增加同步所需的时间)。若用户需要保留硬链接则可以使用 -H 选项;
2)-A 选项将保留访问控制列表( ACL );
3)-X 选项将保留 SELinux 的上下文。
三、同步或传输不同位置的目录或文件:
scp 命令、sftp 命令与 rsync 命令一样,均使用 [user@]host:/path 格式来指定远程位置。
注:远程位置可以是来源也可以是目标系统,但两台计算机中至少有一台是本地计算机。
若要保留文件的所有权,用户必须是目标系统上的 root 用户。
若目标系统为远程位置,则将以 root 用户身份进行验证;若目标系统为本地位置,则必须以 root 用户身份运行 scp 、sftp 或 rsync 命令。
以下均以 rsync 命令同步目录为例。
1、将本地的目录同步到远程系统:
将本地 /root/a 目录的内容同步到远程 serverb 系统上的 /home/student/file 目录,命令如下图所示:
2、将远程系统上的目录同步到本地:
将远程 serverb 系统上 /home/student/file 目录的内容同步到本地的 /root/a 目录,命令如下图所示:
3、将本地的目录同步到本地系统:
将本地 /root/a 目录的内容同步到本地的 /home/student/333 目录,命令如下图所示: