No title

来自chatgpt
rsync -avh 是 rsync 命令的一个常用选项组合,用于高效地复制和同步文件和目录。每个选项的具体含义如下:

  1. -a (archive mode):此选项用于递归地同步目录,并且保持文件的符号链接、权限、时间戳、组和所有者等属性。它等价于多个选项的组合 -rlptgoD。

• -r:递归地复制目录。

• -l:保持符号链接。

• -p:保持文件权限。

• -t:保持时间戳。

• -g:保持组。

• -o:保持所有者。

• -D:保持设备文件和特殊文件。

  1. -v (verbose):详细模式,显示正在处理的文件信息。执行命令时会在终端上显示同步的文件和目录的列表,便于用户了解进程。

  2. -h (human-readable):以人类可读的格式显示文件大小。比如,将文件大小显示为 KB、MB、GB 等单位,而不是以字节数显示。

因此,rsync -avh 的完整功能是递归地同步文件和目录,保持文件的所有重要属性,并以人类可读的格式和详细模式显示同步过程。 这是一个非常常用的选项组合,适用于大多数的备份和文件同步任务。

demo.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash

# This script syncs files from a local directory to a NAS share using rsync.



# 定义变量

SOURCE_DIR=$1 # 本地目录

SMB_SERVER="192.168.1.114"

SMB_SHARE="/personal_folder/Paper/calculation_task/"

SMB_PATH="Paper/code/Hydrogel_sensor/machine_learning_reconstruct"

SMB_USER="lz522957"

MOUNT_POINT="/tmp/nas_mount"



# 创建临时挂载点

mkdir -p $MOUNT_POINT



# 挂载 SMB 共享

echo "挂载 SMB 共享..."

sudo mount -t cifs "//$SMB_SERVER/$SMB_SHARE" $MOUNT_POINT -o username=$SMB_USER,iocharset=utf8



# 检查挂载是否成功

if [ $? -ne 0 ]; then

echo "挂载失败,请检查网络连接和凭据"

exit 1

fi



# 使用 rsync 同步文件

echo "开始同步文件..."

sudo rsync -avz --progress "$SOURCE_DIR" "$MOUNT_POINT/$SMB_PATH"



# 同步完成后卸载 SMB 共享

echo "卸载 SMB 共享..."

sudo umount $MOUNT_POINT



# 删除临时挂载点

rmdir $MOUNT_POINT



echo "同步完成"