Linux 如何保持两个文件夹内容一致

发布于 2022-09-01 15:54:35 字数 137 浏览 13 评论 0

Linux 如何保持两个文件夹内容一致 ?

比如

~/dock1 ~/dock2

要保证完全一致 ...

软连接是不行的好像

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(13

给妤﹃绝世温柔 2022-09-08 15:54:35

rsync + inotify

纵山崖 2022-09-08 15:54:35

感觉你应该为了自动备份吧,如果是平时自己的代码文件之类的,我一般都是在关键的时候手动备份,也简单,就直接执行一下cp -r,自动备份有个问题就是不知道什么时候应该备份,比如10分钟给你备份了,但是实际上你想回到1小时之前,怎么办,所以我还是喜欢手动备份,毕竟也简单。
另外如果你只是要比较两个文件夹是否完全一致的话,我写了一个工具

sh#!/usr/bin/env bash
# 比较两个文件夹是否一致
# 计算每个文件文件的md5值,将所有的md5值写入一个文件中,最后再用md5比较这个文件是否一样
# mac系统下计算md5的值命令是md5,如果是linux,请换成md5sum
# 用法:sh is_same.sh dir1 dir2

if [[ $# != 2 ]]; then
    echo "usage: sh is_same.sh <dir1> <dir2>"
    exit 1
fi

# find查找文件,md5计算md5值,awk取出md5值,sort保证次序是一致的,将结果输出到文件中
find $1 -type f -print | grep -v dir*.md5 | xargs md5 | awk '{print $NF}' | sort > temp.dir1.md5
find $2 -type f -print | grep -v dir*.md5 | xargs md5 | awk '{print $NF}' | sort > temp.dir2.md5

# 比较两个文件是否相同,如果相同说明两个目录是一致的
md5sum1=$(md5 temp.dir1.md5 | awk '{print $NF}')
md5sum2=$(md5 temp.dir2.md5 | awk '{print $NF}')

if [[ $md5sum1 != $md5sum2 ]]; then
    echo "$1 and $2 is different"
else
    echo "$1 and $2 is same"
fi

# 删除临时文件
rm temp.dir1.md5
rm temp.dir2.md5
九命猫 2022-09-08 15:54:35

crontab+rsync

孤云独去闲 2022-09-08 15:54:35

两个文件夹都在本地时,如果一个为主,一个为辅,那么应该是可以用inotify + rsync

另外,其实可以你考虑bit torrent sync或者syncthing,当然这个主要是用在不在同一个台机器上时使用的

安穩 2022-09-08 15:54:35

写个同步脚本吧,放到crontab里

記柔刀 2022-09-08 15:54:35

如果是文件的话可以用硬链接

仄言 2022-09-08 15:54:35

其实我只想问,这个需求是干嘛的...

冰火雁神 2022-09-08 15:54:35

之前为了Dropbox,用了junction,只是为了链接

菊凝晚露 2022-09-08 15:54:35

rsync杠杠的

筱果果 2022-09-08 15:54:35

rsync +1
cron +1

挽袖吟 2022-09-08 15:54:35

软连接不行就用硬链接呗

猥琐帝 2022-09-08 15:54:35

用硬链接可以做到,但是操作的是同一片存储块且不能硬链接跨区。
用rsync+cron的话,就可以完成两个文件甚至文件夹内所有内容的一致和自动同步。

蓝咒 2022-09-08 15:54:35

如果任何东西都要完全一致的话(权限,属性,修改日期等等)

dd if=/dev/null count=100 bs=1M of=somefile
mkfs somefile
mount somefile /some/dir
mount somefile /another/dir

果然还是看你想干什么

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文