如何用 Linux shell 脚本编写一个命令来备份特定文件夹及其所有内容到另一个位置?
时间: 2024-11-27 18:18:21 浏览: 19
在 Linux 中,你可以通过编写 shell 脚本来备份特定文件夹及其所有内容到另一个位置,常用的方式有使用内置的 `cp` 或者更强大的 `rsync` 工具。以下是两种常见方法:
**使用 `cp` 命令:**
假设源文件夹路径是 `/source/folder`,备份目的地是 `/destination/folder`。创建一个名为 `backup.sh` 的文件,然后输入以下内容:
```bash
#!/bin/bash
# 定义源文件夹和目标备份目录
SOURCE_FOLDER=/source/folder
BACKUP_FOLDER=/destination/folder
# 将源文件夹的内容复制到备份目录
cp -ar $SOURCE_FOLDER $BACKUP_FOLDER
echo "Backup of ${SOURCE_FOLDER} to ${BACKUP_FOLDER} completed."
```
在终端中,给脚本可执行权限并运行它:
```sh
chmod +x backup.sh
./backup.sh
```
**使用 `rsync` 命令:**
`rsync` 可以更智能地处理只复制已更改的文件,减少网络流量。示例如下:
```bash
#!/bin/bash
SOURCE_FOLDER=/source/folder
BACKUP_FOLDER=/destination/folder
# 使用 rsync 进行备份,包括递归和保留原始文件时间戳
rsync -avz --progress $SOURCE_FOLDER/ $BACKUP_FOLDER/
echo "Backup of ${SOURCE_FOLDER} to ${BACKUP_FOLDER} completed."
```
这里的选项解释:
- `-a`:archive 模式,等同于 `--recursive` 和 `--preserve-links`,用于递归备份并保留软链接;
- `-v`:verbose,显示详细信息;
- `-z`:压缩传输,提高速度;
- `--progress`:实时显示传输进度。
执行方法同上。
阅读全文