$ oc rsync <source> <destination> [-c <container>]
您可以使用CLI使用rsync
命令将本地文件复制到容器中的远程目录或从远程目录复制本地文件。
oc rsync
命令(或远程同步)是用于将数据库存档复制到您的Pod或从您的Pod复制数据库存档(用于备份和恢复)的有用工具。当正在运行的Pod支持源文件的热重载时,您还可以使用oc rsync
将源代码更改复制到正在运行的Pod中以进行开发调试。
$ oc rsync <source> <destination> [-c <container>]
oc rsync
命令的源参数必须指向本地目录或Pod目录。不支持单个文件。
指定Pod目录时,目录名称必须以Pod名称为前缀。
<pod name>:<dir>
如果目录名称以路径分隔符(/
)结尾,则仅将目录的内容复制到目标。否则,将目录及其内容复制到目标。
oc rsync
命令的目标参数必须指向一个目录。如果目录不存在,但使用rsync
进行复制,则会为您创建该目录。
可以使用--delete
标志删除远程目录中不在本地目录中的任何文件。
使用--watch
选项会导致命令监视源路径中的任何文件系统更改,并在发生更改时同步更改。使用此参数,命令将永远运行。
在短暂的静默期之后发生同步,以确保快速变化的文件系统不会导致连续的同步调用。
使用--watch
选项时,其行为与重复手动调用oc rsync
(包括通常传递给oc rsync
的任何参数)实际上相同。因此,您可以通过与手动调用oc rsync
(例如--delete
)相同的标志来控制行为。
CLI内置了对将本地文件复制到容器或从容器复制本地文件的支持。
使用oc rsync
时,请注意以下事项:
必须安装rsync。oc rsync
命令使用本地rsync
工具(如果客户端机器和远程容器中存在)。
如果在本地或远程容器中找不到rsync
,则会在本地创建一个**tar**存档并将其发送到容器,在该容器中使用**tar**实用程序提取文件。如果远程容器中没有**tar**,则复制将失败。
**tar**复制方法无法提供与oc rsync
相同的功能。例如,oc rsync
会在目标目录不存在时创建它,并且只发送源和目标之间不同的文件。
在Windows中,应安装 |
将本地目录复制到Pod目录
$ oc rsync <local-dir> <pod-name>:/<remote-dir> -c <container-name>
例如
$ oc rsync /home/user/source devpod1234:/src -c user-container
将Pod目录复制到本地目录
$ oc rsync devpod1234:/src /home/user/source
$ oc rsync devpod1234:/src/status.txt /home/user/
oc rsync
命令公开的命令行选项少于标准rsync
。如果您想使用oc rsync
中不可用的标准rsync
命令行选项(例如--exclude-from=FILE
选项),则可以使用标准rsync
的--rsh
(-e
)选项或RSYNC_RSH
环境变量作为变通方法,如下所示:
$ rsync --rsh='oc rsh' --exclude-from=<file_name> <local-dir> <pod-name>:/<remote-dir>
或
导出RSYNC_RSH
变量
$ export RSYNC_RSH='oc rsh'
然后,运行rsync命令
$ rsync --exclude-from=<file_name> <local-dir> <pod-name>:/<remote-dir>
以上两个示例都将标准rsync
配置为使用oc rsh
作为其远程shell程序,以使其能够连接到远程Pod,并且是运行oc rsync
的替代方法。