iT邦幫忙

0

檔案最後修改日期

aqr199 2008-06-11 11:20:3519964 瀏覽

最近在處理ftp檔案同步的問題
因為先前都是用Dreamweaver由電腦工程師做檔案同步
現在想要使用排程在晚上自動執行

找到了很多軟體, 都不太滿意
而且設定很複雜, 大部份都不支援指令型態

於是就自己寫了一個同步的vbs
步驟如下

  1. 連上ftp取回檔案清單,關鍵指令(dir -l list.txt)
  2. 由清單內容(list.txt)比對現有的檔案, 並產生下載清單(get.conf)
    檔案不存在 -> 下載
    檔案最後修改日期不對 -> 下載
    檔案大小不對 -> 下載
  3. 下載資料, 關鍵指令(ftp -s:get.conf)
    get.conf內容示意如下
    open ftp.xxx.com
    isID
    isPWD
    lcd C:\
    cd /images
    binary
    get 001.jpg
    get 002.jpg
    bye

※問題來了
下載的檔案最後修改日期變了?!

於是我做了一些檢查

  1. Dreamweaver同步下來的檔案:建立日期及修改日期沒變
  2. 用windows內建的ftp下載的檔案:建立日期及修改日期變為下載日期
  3. 使用同步軟體(FTPSync)測試::建立日期變為下載日期, 修改日期沒變
    http://www.fileware.com/products.htm
  4. 使用wget下載:
    如果透過ftp下載, 建立日期及修改日期變為下載日期
    如果透過http下載, 建立日期變為下載日期, 修改日期沒變
  5. 使用flashget下載:建立日期及修改日期沒變

有誰能告訴我, 為什麼都是下載檔案,
修改日期有些會被改變, 有些不會呢??

davistai iT邦大師 1 級 ‧ 2008-06-17 09:52:04 檢舉
這個問題很有趣^^
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

12
powerop
iT邦研究生 4 級 ‧ 2008-06-13 15:18:59
最佳解答

要看 FTP server 跟 client 有沒有實做 RFC 3659 所定義的 MDTM (File Modification Time) 功能,請參考我的網誌:
MDTM:淺談FTP協定如何保留下載檔案的日期 / 時間

看更多先前的回應...收起先前的回應...
aqr199 iT邦新手 2 級 ‧ 2008-06-13 16:04:09 檢舉

TO powerop:
感謝你的回應
但是我詳讀你的網誌後, 有點疑問
MDTM似乎只是ftp內在查詢檔案的最後修改日期
而MFMT是在處理檔案上傳後, 變更上傳檔案的建立日期或最後修改日期

處理下載檔案的日期應該還是落在ftp client身上

powerop iT邦研究生 4 級 ‧ 2008-06-14 16:54:45 檢舉

aqr199,
你整理的太好了,幾句話就把重點講完了 XD
沒錯, MDTM 只是 ftp client 去跟 ftp server 查詢檔案時間戳記的指令,最後處理下載檔案的日期還是ftp client的工作。

powerop iT邦研究生 4 級 ‧ 2008-06-14 19:58:03 檢舉

aqr199,
你所提到的
http://phorum.com.tw/ShowPost.aspx?Appr=1&PostID=9071
其實也不算「錯」,倒是剛好點出通訊協定的「應然」與「實然」 :p

那位 ricado 他那張 RunFTP 的貼圖,看來 RunFTP 似乎跟某些 ftp client 一樣,是用 MDTM 去設定上傳的檔案時間戳記。就 RFC 3659 來說,不應該這樣做,但是你去看 RFC 3659 ,它是 2007 年才出來的,關於 MDTM 那段它也說:

The FTP command, MODIFICATION TIME (MDTM), ...... This command has existed in many FTP servers for many years, ......

所以這麼多年,已經有很多 ftp client 跟 ftp server 發展出各種處理上傳、下載檔案時間戳記的方法。另一種不符合 RFC 但常用的是,利用 directory listing (dir / ls) 列出來的檔案時間,當作下載回來的檔案時間(這其實沒有比 MDTM 準確,因為考量到時區問題, dir 出來的有可能是伺服器當地時間,而 MDTM 規定一定要回傳 UTC +0 時間)

做網管就是這樣,我個人覺得,要瞭解「應然」,盡力去達成,不然就接受「實然」,想辦法配合 :)

aqr199 iT邦新手 2 級 ‧ 2008-06-16 15:36:57 檢舉

TO powerop:
除非是新的東西或者是各廠商規格第一次整合的時候
通常規範經常跟不上實務, 所以有時候只能當作參考

規範跟需求有衝突的時候, 一定是以需求為主吧

我要發表回答

立即登入回答