Linux文件共享与同步

一、Linux 系统下挂载网络 Windows 共享文件夹

参考博客: https://blog.csdn.net/zckui/article/details/138343385

为了在系统启动时自动挂载CIFS网络文件系统,需要编辑/etc/fstab文件并添加一行来指定你的CIFS挂载点。以下是一个示例条目:

1
//server(IP)/sharename /mount/point cifs defaults,uid=1000,gid=1000,username=user,password=passwd,dir_mode=0755,file_mode=0755;nofail 0 0
  • //server/sharename: 替换为你的CIFS服务器和共享名称。

  • /mount/point: 替换为你希望挂载CIFS文件系统的本地目录。

  • credentials=/etc/credentials: 指定一个文件,该文件包含用户名和密码(用户名在前,密码在后,中间空格分隔)。

  • iocharset=utf8: 指定字符集,utf8是一个常用的值。

  • sec=ntlm: 指定所使用的安全性协议,ntlm是Windows服务器常用的协议。

  • 0 0: 这两个字段通常设置为0,它们表示是否检查磁盘损坏(第一个字段)和是否启动时进行文件系统检查(第二个字段)。

确保/etc/credentials文件存在,并且具有正确的权限(通常应该是600,即只有所有者有读写权限)。

最后,可以尝试手动挂载文件系统以测试配置是否正确:

1
2
3
4
5
# 挂载
mount -a

# 卸载
umount /mount/point 

在/etc/fstab 中添加一行配置://{直连模式资源挂载地址}/{控制台用户标识}_{文件系统名称} {本地挂载目录} cifs port=9445,username={cifs用户名},password={cifs密码} 0 0,添加后,系统启动时将自动挂载。

二、在 Linux 主机和 KVM 中的 Windows 客户机之间共享文件夹

参考文档:在Linux(Debain 12) 宿主机的 virt-manager 中运行的 Windows 客户机中共享 Linux 宿主机的文件夹配置方法:https://linux.cn/article-16023-1.html

三、Linux 系统间目录/文件同步

3.1 同步方案

rsync + inotify-tools 实时同步

3.2 安装 rsync 和 inotify-tools 包

1
2
3
4
5
# For Debian/Ubuntu
apt install rsync inotify-tools -y

# For Centos
install rsync inotify-tools -y

3.3 编写同步脚本

/usr/local/bin/inotify-rsync.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash

SrcDirs="/Sync/Path1 /Sync/Path2 /Sync/Path3"   # 多个 path 使用空格分开
DstDir="UserName@192.168.1.10:"

inotifywait -r -e create,delete,modify,move -m $SecDirs |
while read -r DIRECTORY EVENT FILE; do
    echo "Rsyncing $DIRECTORY To ${DstDir}$DIRECTORY due($DIRECTORY) to $EVENT on $FILE" >> /path/to/logfile.log
    rsync -arvogp "$DIRECTORY" "${DstDir}$DIRECTORY" >> /path/to/logfile.log
done 

在这个脚本中,inotifywait命令用于监视指定目录SrcDirs,一旦有文件被创建、修改、删除、或移动到这个目录(通过-e create和-e moved_to参数),就会触发管道后的rsync命令进行同步。

  • -m 表示持续监听。
  • -e 指定要监听的事件类型。
  • -r 表示包括子目录。

rsync 命令使用:

  • -a 参数来保持文件属性
  • -r 表示包括子目录
  • -v 打印同步信息
  • -ogp 表示保留 文件所属 用户(own)、组(group) 等信息
  • –delete表示删除目标目录中源目录不存在的文件。

Tips: 配置源主机免密登录目标主机

3.4 配置同步脚本开机自启动

/etc/systemd/system/sync-inotify.service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Unit]
Description=Multi Server - Real Time Folder Sync Service
After=network.target

[Service]
ExecStart=/usr/local/bin/inotify-rsync.sh   
Restart=always

[Install]
WantedBy=Multi-user.target