欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > linux scp复制多层级文件夹到另一服务器免密及脚本配置

linux scp复制多层级文件夹到另一服务器免密及脚本配置

2025/4/2 2:07:32 来源:https://blog.csdn.net/dmt742055597/article/details/146544848  浏览:    关键词:linux scp复制多层级文件夹到另一服务器免密及脚本配置

文章目录

  • 生成 SSH 密钥对
  • 将公钥复制到目标服务器
  • 验证免密登录
  • scp 多级文件夹复制脚本

生成 SSH 密钥对

在本地机器上,使用 ssh-keygen 命令生成 SSH 密钥对。打开终端并执行以下命令:

ssh-keygen -t rsa

按提示连续按回车键,默认会在 ~/.ssh 目录下生成两个文件:id_rsa(私钥)和 id_rsa.pub(公钥)。

将公钥复制到目标服务器

使用 ssh-copy-id 命令将公钥复制到目标服务器:

ssh-copy-id user@host

user:目标服务器账号
host:目标服务器IP
注意:该账号需要有root权限,否则不提权情况下只能复制到该账号的 home 目录下!
执行该命令后,会提示输入目标服务器的密码。输入正确密码后,公钥会被复制到目标服务器的 ~/.ssh/authorized_keys 文件中。

验证免密登录

执行脚本时,不再需要输入密码。

scp 多级文件夹复制脚本

#!/bin/bash# 源目录
source_dir="/opt/data/model_train/storage/model-version"# 目标服务器信息
target_server="root@127.0.0.1"
target_dir="/opt/data/model_train/storage/model-version"# 递归处理源目录下的文件和目录
recursive_copy() {local source_item="$1"local relative_path="${source_item#$source_dir/}"local target_item="$target_server:$target_dir/$relative_path"local pure_target_item="${target_item#*:}"# 检查源项是文件还是目录if [ -f "$source_item" ]; then# 如果是文件,检查目标文件是否存在ssh $target_server "test -f $pure_target_item" < /dev/nullif [ $? -ne 0 ]; then# 如果目标文件不存在,使用 scp 复制文件scp "$source_item" $target_item < /dev/nullecho "Copied $source_item to $target_item"elseecho "File $target_item already exists, skipping."fielif [ -d "$source_item" ]; then# 如果是目录,在目标服务器上创建对应目录ssh $target_server "mkdir -p $pure_target_item" < /dev/nullecho "Ensured directory $target_item exists"# 递归处理目录下的子项for sub_item in "$source_item"/*; doif [ -e "$sub_item" ]; thenrecursive_copy "$sub_item"fidonefi
}# 开始递归处理源目录
for item in "$source_dir"/*; doif [ -e "$item" ]; thenrecursive_copy "$item"fi
done    
*********************************只要思想不滑坡,办法总比困难多*********************************

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词