写一个linux两个文件夹同步的脚本
时间: 2024-03-12 17:44:39 浏览: 153
可以使用rsync命令来实现两个文件夹的同步。具体实现步骤如下:
1. 打开终端,输入以下命令进入目标文件夹所在的路径:
```
cd /path/to/target/folder
```
2. 输入以下命令,同步目标文件夹和源文件夹:
```
rsync -avzh /path/to/source/folder/ .
```
其中,-a 选项表示使用归档模式同步,-v 选项表示显示同步过程,-z 选项表示压缩传输,-h 选项表示人性化显示文件大小。
3. 如果需要定期同步,可以将以上命令保存为脚本文件,例如 sync.sh,并设置定时任务:
```
crontab -e
```
在打开的文件中添加以下内容:
```
0 */6 * * * /path/to/sync.sh
```
其中,“0 */6 * * *” 表示每6小时执行一次同步脚本。
请注意,以上命令仅同步目录下的文件和子目录,不包括删除的文件和子目录。如果需要同步删除的文件,可以添加 --delete 选项:
```
rsync -avzh --delete /path/to/source/folder/ .
```
同时,为了确保同步的准确性和安全性,建议在同步前先备份数据。
相关问题
shell脚本实现本地文件与linux服务器文件同步,每天同步两次
可以使用rsync命令实现本地文件与Linux服务器文件的同步。可以将同步操作写入一个shell脚本,并使用crontab定时执行脚本。
以下是一个示例脚本:
```shell
#!/bin/bash
#设置同步源和目标路径
source_path="/path/to/local/folder/"
destination_path="user@server:/path/to/remote/folder/"
#执行同步命令
rsync -avz --delete --exclude=".DS_Store" $source_path $destination_path
echo "Sync complete at $(date +%Y-%m-%d\ %H:%M:%S)"
```
解释:
- `source_path`:本地文件夹的路径。
- `destination_path`:服务器上文件夹的路径,需要指定用户名和服务器地址。
- `rsync`命令:使用`-avz`参数表示以归档模式同步文件,保留所有文件属性;使用`--delete`参数表示删除目标路径中不存在的文件;使用`--exclude`参数表示排除某些文件,这里排除了`.DS_Store`文件(仅在Mac系统中存在)。
- `echo`命令:打印同步完成的时间。
将脚本保存为`sync.sh`文件,并使用以下命令将其添加到crontab中:
```shell
crontab -e
```
在编辑器中添加以下两行:
```shell
0 0 * * * /path/to/sync.sh
0 12 * * * /path/to/sync.sh
```
这表示每天0点和12点执行一次脚本。保存并退出编辑器。
注意:需要在本地和服务器上安装rsync命令。
阅读全文