用shell脚本写上传文件到服务器
时间: 2024-10-13 10:10:08 浏览: 81
在Shell脚本中,上传文件到服务器通常会涉及使用`scp`或`rsync`这样的命令,它们都是安全的文件传输工具。这里是一个基本的例子:
```bash
#!/bin/bash
# 检查文件是否存在
if [ ! -f "$FILE_TO_UPLOAD" ]; then
echo "Error: 文件$FILE_TO_UPLOAD不存在."
exit 1
fi
# 用户名和服务器地址
USER="username"
SERVER_IP="server_ip_address"
# 定义要上传的文件路径和远程目录
LOCAL_FILE="$FILE_TO_UPLOAD"
REMOTE_DIR="$SERVER_DIR/remote_path"
# 使用scp命令上传文件
scp -i ~/.ssh/id_rsa "$LOCAL_FILE" "$USER@$SERVER_IP:$REMOTE_DIR"
# 或者使用rsync(备份模式)
# rsync -avz --progress --delete --exclude=".git/" "$FILE_TO_UPLOAD" "$USER@$SERVER_IP:$REMOTE_DIR"
# 检查上传状态
if [ $? -eq 0 ]; then
echo "文件$FILE_TO_UPLOAD已成功上传至$REMOTE_DIR."
else
echo "文件上传失败,错误代码:$?"
fi
```
在这个脚本中,首先检查要上传的文件是否存在,然后使用`scp`命令(或`rsync`)将本地文件移动到远程服务器指定的目录。`-i`选项用于提供SSH密钥,以便无交互式登录。`-v`用于详细显示传输进度,`-z`压缩传输以节省带宽,`--progress`实时显示进度。
阅读全文