写一个shell脚本,使用sftp上传文件夹下面所有文件到服务器上
时间: 2024-10-16 15:22:05 浏览: 41
在Shell脚本中,你可以使用`sftp`命令配合通配符`*`来上传指定目录下的所有文件到远程服务器。以下是一个基本的示例,假设你想将当前目录下的`myfolder`文件夹及其内容上传到名为`username@server.com`的服务器的`/path/to/destination`路径:
```bash
#!/bin/bash
# 定义源路径、目标路径和用户名密码
src_dir="myfolder"
dest_path="/path/to/destination"
# 登录信息
remote_user="username"
remote_host="server.com"
remote_password="your_password" # 将实际密码替换这里
# 使用sftp上传文件
echo "Uploading $src_dir to $remote_host..."
sftp -o "StrictHostKeyChecking=no" "$remote_user@$remote_host" << EOF
cd "$dest_path"
put "$src_dir"/*
bye
EOF
# 检查是否成功上传
if [ $? -eq 0 ]; then
echo "Upload successful."
else
echo "Upload failed. Check the logs for more details."
fi
```
在这个脚本中,`-o StrictHostKeyChecking=no`是为了避免首次连接时询问主机密钥验证,如果安全级别较高,可以移除这条选项并手动处理。
保存此脚本为`upload_files.sh`,然后通过`chmod +x upload_files.sh`使其可执行,并运行`./upload_files.sh`来执行上传操作。
阅读全文