Filesystems
繼承修改日期的文件系統連結
我正在嘗試根據arch wiki通過 LAN 更新多個 Arch 發行版。在提供的解決方案中,硬連結被創建到
*.db
文件/var/cache/pacman/pkg
,這個文件夾是網路伺服器為 LAN 機器服務的文件夾。問題是
*.db
文件得到更新,但硬連結日期沒有。ls -alh /var/lib/pacman/sync/ total 39M drwxr-xr-x 2 root root 4.0K Aug 20 23:12 . drwxr-xr-x 4 root root 4.0K Aug 20 23:12 .. -rw-r--r-- 1 root root 5.2M Aug 20 21:53 community.db -rw-r--r-- 1 root root 22M Aug 16 23:32 community.files -rw-r--r-- 1 root root 131K Aug 20 09:20 core.db -rw-r--r-- 1 root root 885K Aug 15 07:20 core.files -rw-r--r-- 1 root root 1.7M Aug 20 20:03 extra.db -rw-r--r-- 1 root root 9.1M Aug 16 13:09 extra.files
這是網路伺服器提供的目錄:
ls -alh /var/cache/pacman/pkg/*.db -rw-r--r-- 1 root root 5.2M Aug 19 11:18 /var/cache/pacman/pkg/community.db -rw-r--r-- 1 root root 132K Aug 19 11:15 /var/cache/pacman/pkg/core.db -rw-r--r-- 1 root root 1.7M Aug 19 11:17 /var/cache/pacman/pkg/extra.db
雖然
Aug 20
pacman 數據庫已更新,但硬連結日期資訊是指昨天(創建硬連結的日期並且不會更改),這會導致其他機器看到沒有新的更新。如果其他機器線上更新他們的 pacman 數據庫(但不安裝它們),那麼他們可以通過 LAN 更新。一種解決方案是製作一個腳本來更新日期資訊,但我很好奇是否有一種方法可以直接在連結中繼承文件日期資訊。我最好的選擇是什麼?
更新
索引節點資訊:
ls -li /var/lib/pacman/sync/*.db 4718985 -rw-r--r-- 1 root root 5373751 Aug 20 21:53 /var/lib/pacman/sync/community.db 4719401 -rw-r--r-- 1 root root 134110 Aug 20 09:20 /var/lib/pacman/sync/core.db 4720712 -rw-r--r-- 1 root root 1703986 Aug 20 20:03 /var/lib/pacman/sync/extra.db ls -li /var/cache/pacman/pkg/*.db 4719500 -rw-r--r-- 1 root root 5372789 Aug 19 11:18 /var/cache/pacman/pkg/community.db 4720207 -rw-r--r-- 1 root root 135051 Aug 19 11:15 /var/cache/pacman/pkg/core.db 4718949 -rw-r--r-- 1 root root 1703685 Aug 19 11:17 /var/cache/pacman/pkg/extra.db
這是怎麼回事?!
問題是 *.db 文件得到更新,但硬連結日期沒有。
要麼你沒有硬連結,要麼你有某種記憶體。Unix 作業系統中的硬連結是指向同一個 inode 的文件名(甚至不是文件),即它們共享所有內容、權限、時間等。
請執行
ls -li /var/lib/pacman/sync/*.db /var/cache/pacman/pkg/*.db
並檢查相關文件是否具有相同的 inode 編號。