拷贝文件常用的命令为
scp
和
rsync
。
- 使用
scp
拷贝文件的时候,如果不是 root 用户无法直接拷贝到没有权限写入的文件夹。一般常用的做法是先将文件拷贝到 home 文件夹下,然后再远程使用sudo
命令进行复制。 - 使用
rsync
拷贝文件时,如果远程用户配置了 sudo 免密,则可以远程复制文件到没有权限的文件夹。
配置 sudo 免密执行
shell复制代码sudo tee -a /etc/sudoers <<EOF
yabin ALL=NOPASSWD:ALL
EOF
将其中的
yabin
替换成自己的用户名即可。
使用 scp 命令拷贝
shell复制代码# 将文件夹拷贝到 home 的临时文件夹中scp -r /data/work/etcd-${RELEASE}-linux-amd64/etcd* m-yabin-master1:~/etcd-temp/
# 拷贝一个文件到多个主机中foriin m-yabin-node m-yabin-node1;doscp /data/work/etcd-${RELEASE}-linux-amd64/etcd* $i:~/etcd-temp/;done
示例中:
m-yabin-master1,m-yabin-node,m-yabin-node1
为远程主机名,可以替换成远程主机 ip。- 对于单个文件的拷贝,去掉
-r
参数即可。
使用 rsync 命令拷贝
rsync 在配置
sudo
免密执行以后,可以直接拷贝文件到需要
sudo
的文件夹下,不过需要添加
--rsync-path="sudo rsync"
参数,如下所示:
shell复制代码for iin m-yabin-master1 m-yabin-master2;dorsync -vaz etcd.conf --rsync-path="sudo rsync"$i:/etc/etcd/;doneforiin m-yabin-master1 m-yabin-master2;dorsync -vaz etcd*.pem ca*.pem --rsync-path="sudo rsync"$i:/etc/etcd/ssl/;done
上面命令分别演示了拷贝
etcd.conf
单个文件,以及包含
etcd
和
ca
的多个
pem
文件的命令。
使用 root 用户拷贝
当需要拷贝文件到需要 root 权限的位置时,可以考虑使用 root 用户进行拷贝,ubuntu 配置 root 用户允许远程登录的方式:
shell复制代码# 给 root 用户设置密码,这样就可以以 root 身份登录了sudopasswd root
# 修改 /etc/ssh/sshd_config 文件加上下面这一句以允许 root ssh 远程登录
PermitRootLogin yes# 重启 ssh 服务sudo systemctl restart sshd
# 如果想删除 root 用户登录,只需要清除密码即可sudopasswd -l root
设置完毕之后,直接用 root 用户+ scp 命令拷贝即可。
版权归原作者 effort666 所有, 如有侵权,请联系我们删除。