写一个shell脚本,判断当本地文件夹不为空时,批量上传到linux服务器,上传完成后清空文件夹
时间: 2024-06-10 10:07:02 浏览: 127
您好!感谢您的提问。关于您的问题,可以使用以下的shell脚本进行实现:
``` shell
#!/bin/bash
# 定义本地待上传文件夹和远程服务器的目标文件夹
local_dir="本地待上传文件夹路径"
remote_dir="远程服务器目标文件夹路径"
# 判断本地文件夹是否为空,若不为空,则执行上传操作
if [ "$(ls -A $local_dir)" ]; then
echo "开始上传本地文件到远程服务器..."
scp -r $local_dir/* 远程服务器用户名@远程服务器IP:$remote_dir
echo "本地文件上传完成!"
# 清空本地文件夹
echo "清空本地文件夹中,请耐心等待..."
rm -rf $local_dir/*
mkdir $local_dir
echo "清空本地文件夹完成!"
else
echo "本地文件夹为空,无需上传!"
fi
exit 0
```
说明:
- 将本地待上传文件夹路径和远程服务器的目标文件夹路径分别赋值给`local_dir`和`remote_dir`变量
- 使用`if [ "$(ls -A $local_dir)" ]; then`语句判断本地文件夹是否为空
- 若本地文件夹不为空,则使用`scp`命令批量上传所有文件到远程服务器,并在上传完成后清空本地文件夹
- 若本地文件夹为空,则直接输出提示信息,无需上传或清空操作
希望这个脚本能够帮到您!
相关问题
shell脚本将windows文件批量上传到linux服务器,写一个例子
好的,我可以为您提供一个例子。假设您的 Windows 文件都存储在 C:\Windows\Folder 中,您想要将这个文件夹中的所有文件上传到 Linux 服务器的 /home/user 目录下,您可以按照以下步骤操作:
1. 在 Windows 上打开 PowerShell。
2. 使用以下命令将当前目录更改为 C:\Windows\Folder:`cd C:\Windows\Folder`
3. 使用以下命令将文件夹中的所有文件上传到 Linux 服务器上的 /home/user 目录下:`Get-ChildItem | foreach {scp $_.FullName user@linux-server:/home/user/}`
4. 这将提示您输入 Linux 服务器上的密码,输入后文件将开始上传。
请注意,以上命令中的“user”和“linux-server”应替换为您自己的用户名和服务器地址。如果您在 Linux 服务器上使用 SSH 密钥进行身份验证,则可以使用以下命令:`Get-ChildItem | foreach {scp -i ~/.ssh/id_rsa $_.FullName user@linux-server:/home/user/}`。再次请注意,其中的“~/.ssh/id_rsa”应替换为您自己的 SSH 密钥路径。
希望这可以帮助您。
写个shell脚本提取linux所有文件夹中的文件 放到一个新的文件夹
可以使用以下shell脚本:
#!/bin/bash
# 定义新文件夹
NEW_FOLDER=new_folder
# 创建新文件夹
mkdir $NEW_FOLDER
# 查找所有文件夹中的文件
for folder in $(find . -type d); do
# 将文件移动到新文件夹中
mv $folder/* $NEW_FOLDER
done
阅读全文