linux 拷贝文件到远程服务器的方法

拷贝文件常用的命令为 scprsync

  • 使用 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/
# 拷贝一个文件到多个主机中
for i in m-yabin-node m-yabin-node1; do scp /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 i in m-yabin-master1 m-yabin-master2;do rsync -vaz etcd.conf --rsync-path="sudo rsync" $i:/etc/etcd/;done
for i in m-yabin-master1 m-yabin-master2;do rsync -vaz etcd*.pem ca*.pem --rsync-path="sudo rsync" $i:/etc/etcd/ssl/;done

上面命令分别演示了拷贝 etcd.conf 单个文件,以及包含 etcdca 的多个 pem 文件的命令。

使用 root 用户拷贝

当需要拷贝文件到需要 root 权限的位置时,可以考虑使用 root 用户进行拷贝,ubuntu 配置 root 用户允许远程登录的方式:

shell复制代码# 给 root 用户设置密码,这样就可以以 root 身份登录了
sudo passwd root
# 修改 /etc/ssh/sshd_config 文件加上下面这一句以允许 root ssh 远程登录
PermitRootLogin yes
# 重启 ssh 服务
sudo systemctl restart sshd
# 如果想删除 root 用户登录,只需要清除密码即可
sudo passwd -l root

设置完毕之后,直接用 root 用户+ scp 命令拷贝即可。

你可能感兴趣的:(服务器,linux,ubuntu,安全,前端)