当符号链接比原始文件旧时,有没有办法使用传统命令更新符号链接?
我使用 Seafile 服务器(类似于 Dropbox)将某些文件提供给我的学生。所以我共享了一个目录并创建了指向这些文件的链接。Seafile 和 Dropbox 都不关心链接并将实际文件复制到服务器。
问题是如果我更新实际文件,链接时间戳不会改变,新版本的文件也不会上传到服务器。
我尝试了简单的测试:
[ ./shared/the-symlink -ot ./actualfiles/pontedfile ] && touch -h ./shared/the-symlink
不幸的是,test
取消引用链接并将文件的时间戳与自身进行比较,结果当然是错误的。
另请注意,符号链接必须比链接文件更新。我不需要将其设置为相同的时间戳。
有没有办法test
检查链接的时间戳而不是指向的文件?
我试图避免的其他解决方案:
- 复制文件而不是链接会起作用,但是我不得不消耗太多的磁盘空间,因为文件通常很大;
touch
使用所有符号链接也可以,但是所有文件都会一次又一次地复制到服务器;(不是问题:见下面的编辑)
我愿意一个比将时间戳转换为字符串并自己比较它们更优雅的解决方案......
这对我来说不是解决方案。
编辑:
这不是问题的答案,但它是我的问题的解决方案:touch -h *
更新所有符号链接时间戳。Seafile 识别出这种变化并采取行动。幸运的是,它现在使用实际的文件时间戳重新检查并仅上传更改的文件。
编辑2:
使用stat
工作的解决方案:stat -c "%Y"
. 感谢史蒂夫。
stat
将给出符号链接本身的时间戳。所以像下面这样的方法会起作用