shell脚本,判断文件夹是否存在,如果不存在创建,存在把文件拷贝到文件夹中
时间: 2023-06-21 12:18:44 浏览: 102
可以使用以下shell脚本来实现:
```shell
#!/bin/bash
folder_name="your_folder_name"
file_name="your_file_name"
# 判断文件夹是否存在
if [ ! -d $folder_name ]; then
# 如果不存在则创建文件夹
mkdir $folder_name
fi
# 把文件拷贝到文件夹中
cp $file_name $folder_name
```
其中,`folder_name` 表示要创建的文件夹名称,`file_name` 表示要拷贝的文件名称。如果要拷贝多个文件,则可以使用通配符来表示。例如,`cp *.txt $folder_name` 表示将所有后缀为 `.txt` 的文件拷贝到文件夹中。
相关问题
linux机器上使用shell脚本并行拷贝文件或文件夹到多台其他linux服务器上
可以使用`rsync`命令和`ssh`命令来实现在多台 Linux 服务器之间并行拷贝文件或文件夹。
`rsync`是一个优秀的文件同步工具,可以快速的将本地或远程服务器的文件同步到其他服务器上,同时它可以使用 SSH 连接进行加密传输,确保数据传输的安全和完整性。
以下是一个示例脚本,可以并行地将文件或文件夹拷贝到多个目标服务器上:
```bash
#!/bin/bash
# 源文件或目录
src="source-dir"
# 目标服务器的 IP 地址或域名
hosts=("server1" "server2" "server3")
# 目标服务器的用户名
user="username"
# 目标服务器的目标路径
dest="destination-dir"
# 并行执行 rsync 命令
for host in "${hosts[@]}"; do
ssh "$user@$host" "mkdir -p $dest && rsync -avz $src/ $user@$host:$dest/" &
done
# 等待所有任务完成
wait
```
在这个脚本中,`src` 变量是需要拷贝的源文件或目录,`hosts` 变量是一个包含目标服务器 IP 地址或域名的数组,`user` 变量是目标服务器的用户名,`dest` 变量是目标路径。该脚本通过 SSH 连接到每个目标服务器,并在后台运行 `rsync` 命令来完成拷贝任务。`wait` 命令用于等待所有任务完成后再结束脚本执行。
需要注意的是,该脚本需要在执行之前确保已经配置好了 SSH 免密登录,否则需要手动输入密码进行登录。同时,如果文件或文件夹较大,可能需要增加 `rsync` 命令的额外选项来加速拷贝,例如使用 `--progress` 显示进度信息,或使用 `--partial` 支持断点续传等。
shell脚本文件拷贝夹定时拷贝任务
以下是使用Shell脚本实现定时拷贝文件夹的方法:
1. 创建一个名为copy.sh的Shell脚本文件,并在其中添加以下代码:
```shell
#!/bin/bash
cp -r /path/to/source/folder /path/to/destination/folder
```
2. 将源文件夹的路径和目标文件夹的路径替换为实际的路径。
3. 保存并退出copy.sh文件。
4. 使用crontab命令设置定时任务。例如,如果您想每天晚上10点执行此任务,请在终端中输入以下命令:
```shell
crontab -e
```
然后在打开的文件中添加以下行:
```shell
0 22 * * * /bin/bash /path/to/copy.sh
```
其中,0 22 * * * 表示任务将在每天的22:00执行,/bin/bash /path/to/copy.sh 表示要执行的命令。
5. 保存并退出crontab文件。
6. 现在,每天晚上10点,系统都会自动执行copy.sh脚本,将源文件夹中的所有文件复制到目标文件夹中。
阅读全文