写一个linux脚本,用sftp远程mput上传文件,统计并echo本地总共有多少文件,上传并echo了多少文件,如果上传文件为0则echo返回“上传文件失败”
时间: 2024-09-27 12:05:44 浏览: 30
linux脚本sftp上传文件
5星 · 资源好评率100%
下面是一个基本的bash脚本来实现这个功能,它会使用`sftp`命令从本地目录上传文件,并统计总数和成功上传的数量。如果未上传任何文件,脚本将打印"上传文件失败"。
```bash
#!/bin/bash
# 定义本地和远程路径
LOCAL_DIR="/path/to/local/directory"
REMOTE_DIR="/path/to/remote/directory"
# 初始化计数器
FILES_COUNT=0
SUCCESS_COUNT=0
# 使用sftp上传文件
while IFS= read -r -d $'\0' file; do
if sftp user@host << EOF
put "$file" "$REMOTE_DIR/"
EOF
then
echo "Uploaded: ${file}"
SUCCESS_COUNT=$((SUCCESS_COUNT+1))
else
echo "Failed to upload: ${file}"
fi
((FILES_COUNT++))
done < <(find "$LOCAL_DIR" -type f -print0)
# 如果成功上传文件为0,打印失败信息
if [ $SUCCESS_COUNT -eq 0 ]; then
echo "上传文件失败"
else
echo "总共有$FILES_COUNT个文件,成功上传了$SUCCESS_COUNT个。"
fi
```
在这个脚本中,我们首先找到`LOCAL_DIR`下的所有文件,然后逐个尝试上传。脚本使用`find`命令找出所有文件并将它们的名字传递给`sftp`。如果上传成功,计数器`SUCCESS_COUNT`增加;如果上传失败,会打印错误消息。
请替换`LOCAL_DIR`,`REMOTE_DIR`,`user`和`host`为实际的值。
阅读全文