登录  /  注册
sync - Linux 如何保持两个文件夹内容一致
伊谢尔伦
伊谢尔伦 2017-04-17 13:25:56
[Linux讨论组]

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

比如

~/dock1 ~/dock2

要保证完全一致 ...

软连接是不行的好像

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(13)
黄舟

感觉你应该为了自动备份吧,如果是平时自己的代码文件之类的,我一般都是在关键的时候手动备份,也简单,就直接执行一下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
阿神

crontab+rsync

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号