作者legendsaga74 (柏青哥PA)
看板MobileComm
標題[問題] 連不上WebDAV,複製圖片日期被改寫(done)
時間Fri Aug 10 19:14:00 2018
https://www.guidingtech.com/39472/map-android-drive-windows/
因個人需求,我需要mount android phone當作網路磁碟機
參考這篇指南,手機執行WebDAV Server後
我pc端ping得到手機ip(同wifi網域),但無法用explorer探訪手機端
windows的map network drive也失敗(該ip無回應)
想知道WebDAV server在android 6.0 / Samsung Note 4 上作用ok嗎?
有板友有興趣能給點建議嗎
--
問題起因: 手機上許多下載的網路圖片(非照片,無exif)
有備份到pc端或者sd卡,導致修改日期跳掉,順序大亂
已有事先爬文,板上即有數篇相關文章
其解法為用快圖瀏覽修復exif,但我不適用
已參考文章
[問題] HTC照片移至SD卡後日期跳掉
https://webptt.com/m.aspx?n=bbs/MobileComm/M.1433856780.A.9F8.html
[請益] Z2照片移至SD卡後的日期會變更?有救嗎?
http://www.ucptt.com/article/Android/1404295371/0E2
[其他] 關於記憶卡轉移(檔案時間)
https://apk.tw/thread-786104-1-1.html
簡單說就是手機上無論是本機內部記憶體 或者是sd卡
最初儲存的圖片檔都有日期標籤(屬性)
複製到pc上的時候 日期順序也都還是正確的
無論檔名怎麼亂序 按照日期排序都可以正常瀏覽
但pc端複製回手機端 圖片的日期屬性就統統被修改成當下時間
不管怎麼排序都無法正常瀏覽了
這個問題會發生在:
1) 內存<->SD卡 互copy時
2) PC->內存 時
故我參考網路文章 想把手機map成網路磁碟機 用xcopy保留所有屬性的方式來copy試試
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.147.115
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MobileComm/M.1533899646.A.CC3.html
1F:→ mainline : 簡稱蛋疼 這題回答會很長 吃飯先 08/10 19:24
2F:推 mainline : 先問一盲點 個人沒用過webdav 你確定這樣抄modifi 08/10 19:48
3F:→ mainline : ed date在電腦收件端的mod不會跑掉? 08/10 19:48
確定pass 因為備份到pc時時如果「修改日期」就亂掉 那我瞬間就會發現
我備份好多次皆正常 剛剛也有特地針對測試過
也注意到手機端跟pc端的「日期」屬性名稱不太一樣(都從pc端看)
手機端:有「修改日期(default)」、「建立日期」
https://i.imgur.com/WCJW0P8.png
pc端(從手機端copy出來後):變成「日期(default)」,其他種日期標籤都有
https://i.imgur.com/MsxmI1p.png <--這些就是備份出來的圖檔 日期都還在
但是要顯示什麼欄位其實是windows自己自訂檢視的
所以我也不懂 日期標籤的名稱差異或空缺 有什麼結論
因此結果更讓我困惑 手機端的圖片含有正確的日期資訊
備份到pc上時仍然還有 那怎麼複製回去就沒了
難道就是單純的資料庫欄位名稱不一樣 備份出來時有對應欄位可以填入
而備份回去時就找不到欄位填入,故統統一致改寫?
有空我再試試批次寫入時間標籤的軟體試試...
https://i.imgur.com/7NS2LBs.png <-- ex:也只有三種日期標籤
上網爬文的確有看到類似你說的儲存格式的問題
導致手機連接PC走MTP/PTP,而非以前的USB模式
但既然原本的日期資訊可以正常備份出來 那我就鐵了心想所有備份回去的方法試試看
爬文apk.tw的使用者回應把手機map成disk 用xcopy指令有成功
https://i.imgur.com/Q4spt7a.png
4F:推 Segal : 通訊協定和port沒打錯吧? 08/10 19:56
6F:→ Segal : 有回文說明過 08/10 19:56
嗯 沒打錯 照著server info打的
7F:→ mainline : 那個webdav daemon軟體還有在維護嗎 看介面好古老 08/10 21:21
8F:→ mainline : 在新系統上出這類問題不奇怪 08/10 21:21
剛剛測試webdav是好的 樓上s大提醒我通訊協定要打對 我看是http
在web browser有連接成功 但是只能read-only
我要copy圖片進手機的話 還是得走「新增網路磁碟機」的路
https://i.imgur.com/BL1tRfi.png <-- but still failed
9F:→ mainline : 其實FTP應該更好用才對 請參考樓上連結文 而且手機 08/10 21:23
10F:→ mainline : 端的FTP daemon還有在維護的比較多選擇 如solid e 08/10 21:23
11F:→ mainline : xplorer的FTP插件 08/10 21:23
12F:→ mainline : 至於最後的複製一與二 問題根源是同一個 08/10 21:29
13F:→ mainline : 無解 換手機吧 08/10 21:29
14F:→ mainline : 這問題是fuse造成的 大概是這樣的情況 約在安卓換 08/10 21:34
15F:→ mainline : MTP同一時期 內部虛擬SD空間不再是格式化為ext或f 08/10 21:34
16F:→ mainline : at 而是使用了潮貨fuse (file system in userspa 08/10 21:34
17F:→ mainline : ce) 08/10 21:34
18F:→ mainline : 白話說法是 從前的data是/data partition 虛擬sd是 08/10 21:45
19F:→ mainline : /ext_sd partition 兩個獨立的partition 出廠前怎 08/10 21:45
20F:→ mainline : 麼切就定終生了 如當年32GB HTC One X 大概這般/s 08/10 21:45
21F:→ mainline : ystem 2G /data 2-3G dalvik /1-2G 虛擬 ext_sd 2 08/10 21:45
22F:→ mainline : 4 後期就遭遇了app不能裝太多困境 因為安裝的APK檔 08/10 21:45
23F:→ mainline : 與app內部資料 全都塞在data裡 說為何不切大一些 08/10 21:45
24F:→ mainline : 因為切大會永久吃掉虛擬SD空間 賣32G手機結果開機 08/10 21:45
25F:→ mainline : 剩不到20G會被罵死的道理 08/10 21:45
27F:→ Segal : 吧... 08/10 21:51
28F:→ Segal : 然後潮貨FUSE也退潮了,SDCardFS準備接棒潮一發 08/10 21:52
29F:推 mainline : fuse解決了切分區的難題 因為安卓透過它在data分區 08/10 21:54
30F:→ mainline : 內虛擬出一個“虛擬SD分區“ 可視成這個虛擬出來的 08/10 21:54
31F:→ mainline : 分區 其實data分區內的一個文件 這樣就不用再另外 08/10 21:54
32F:→ mainline : 切一個大大的虛擬SD分區給用戶塞文件了 成功解決了 08/10 21:54
33F:→ mainline : data ext_s怎麼切都不滿意的難題 08/10 21:54
34F:→ mainline : 但是fuse有個大弱點 性能不好 因為它活在userspac 08/10 22:03
35F:→ mainline : e data分區使用的ext4驅動則是更底層kernel space 08/10 22:03
36F:→ mainline : 成員 安卓4.3開始動工添加selinux強化底層安全性後 08/10 22:03
37F:→ mainline : 間接造成了這一切寫入日期丟失的問題 因為在user 08/10 22:03
38F:→ mainline : 的fuse無法直接將這指令下達了 08/10 22:03
39F:→ mainline : 一直到三星開發了kernel space 的sdcardfs (註: 08/10 22:08
40F:→ mainline : 名不符實,與SD卡無關)作為fuse的替代品 三星在某 08/10 22:08
41F:→ mainline : 些手機上有偷跑這東西 但我不清楚是哪隻 08/10 22:08
42F:→ mainline : 谷歌在開發安卓8同時 已將sdcardfs移交成為安卓ke 08/10 22:14
43F:→ mainline : rnel分支一環 因此新機“應”該都會用它 舊機升安 08/10 22:14
44F:→ mainline : 卓8的則要看廠商怎麼辦 一般舊機升級是不會特意去 08/10 22:14
45F:→ mainline : 替換啦 資源有限就別多做事 免得多做多錯出事情的 08/10 22:14
46F:→ mainline : 道理 08/10 22:14
47F:推 mainline : 囉唆完的結語就是 要想保留正確的修改日期 你需要 08/10 22:19
48F:→ mainline : 的是kernel使用sdcardfs的手機 這是出新手機不會交 08/10 22:19
49F:→ mainline : 代的瑣碎資訊 但就我上頭說的 你可以大略知道那些 08/10 22:19
50F:→ mainline : 手機有在使用它 08/10 22:19
wow 好多熱心板友 謝謝你們的資訊
我慢慢消化 嘗試後再來回報結果
確實我還沒試過ftp的方式 我試試
(更新) ftp copy圖片回手機仍然失敗 日期依舊跳掉了
※ 編輯: legendsaga74 (114.39.147.115), 08/10/2018 23:34:54
51F:→ mainline : 注意電腦的客戶端 要設定寫入修改時間 客戶端通常 08/11 00:41
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
這是? 我用filezilla 設定裡面沒看到這樣的設定
52F:→ mainline : 會將這項做成選項 08/11 00:41
(更新) 我成功用WebDAV去copy檔案過去了!
原來我WebDAV一直連失敗是因為在錯誤的視窗下操作
以WebDAV Server (Android)而言 server:
http://192.168.1.113:8080
是要在「新增網路位置」下連接,而非在「連線網路磁碟機」下連接
https://i.imgur.com/z4Km2pP.png
而且若server有設帳密還連不到,可能帳密要塞進位址當中,故我server沒設帳密
接著爬文找到如何給網路位置一個磁碟代號
https://i.imgur.com/xqmaKrP.png
開始copy
https://i.imgur.com/8XevKJd.png
Result: FAIL 日期還是統一被改寫 放棄了:(
果然如m大所說 換一隻手機比較快 囧
※ 編輯: legendsaga74 (114.39.147.115), 08/11/2018 01:11:22
53F:→ legendsaga74: 不過有學到WebDAV 好像比ftp好用 滿有趣的 08/11 01:13
54F:→ Segal : 就知道是通訊協定問題XD。連線網路磁碟機是連SMB協 08/11 12:11
55F:→ Segal : 定的,連WebDAV最快就直接位置列\\進去就好 08/11 12:11
56F:→ Segal : 提供兩個思維給你。一是root後在su權限下跑SMB ser 08/11 12:19
57F:→ Segal : ver。理論上繞過user spaces的FUSE直接存取。二是 08/11 12:19
58F:→ Segal : 把圖檔打包(zip, tar隨便都好)傳回來再解包,應該 08/11 12:19
59F:→ Segal : 可以保留Time stamp 08/11 12:19
thanks for nice idea
另外昨晚也有熱心板友來信提供想法
== 作者 jhangyu (jhangyu) ==
就是用Shell Script(bash)裡面的stat指令去取得檔案修改日期時間
然後把它重新命名成檔名
搬出來到Windows之後在重新把修改日期依照檔案名稱修正
這樣就OK了
不過你要跟bash熟一點,用for迴圈會比較省事
例如說:
for IMG in $(ls ${your_folder} | grep -P .*\.jpg)
mod_date=$(stat ${IMG} | grep Modify | awk -F. '{print $1}' | awk '{print $2
,$3}' | sed 's/[-:]/./g')
mv ${IMG} ${mod_date}.jpg
done
==
根據他的idea我決定去找現成更名工具 果然被我找到
https://i.imgur.com/JnySwVq.png
所以我可以在pc端批次更改檔名為「修改日期」
之後依檔名排序瀏覽即可 就不怕TimeStamp丟失了...
※ 編輯: legendsaga74 (114.39.147.115), 08/11/2018 13:22:10
60F:推 mainline : 強! JHDR+在桶內都能搶舞台 08/11 18:01
61F:→ mainline : 不曉得FileZilla對於MDTM指令是怎麼一回事 安卓FT 08/11 18:06
62F:→ mainline : P daemon核心都是拿既有代碼libs移植過來的 FTP協 08/11 18:06
63F:→ mainline : 議與指令歷史悠久 那些libs不會不支援這指令 08/11 18:06
64F:推 mainline : @segal 繞不過fuse的 因為fuse是fuse 它活在其它f 08/11 18:21
65F:→ mainline : ile system下 fuse不是在ext4分區內再模擬一個ext 08/11 18:21
66F:→ mainline : 4分區 你要讀取它只能透過fuse driver 因為它有自 08/11 18:21
67F:→ mainline : 己一套邏輯 它不是ext也不是fat般的存在 因此無法 08/11 18:21
68F:→ mainline : 繞過 舉例data分區若是ext4的話 直接透過ext4驅動 08/11 18:21
69F:→ mainline : 是無法讀取那個由fuse生出來的檔案 因為ext4根本搞 08/11 18:21
70F:→ mainline : 不懂那東西的內容 08/11 18:21
71F:推 mainline : BTW 若你還想試FTP的話 FTP在連線登錄訊息上 serv 08/11 18:38
72F:→ mainline : er方會自己表明自己有支援的指令 你看看有沒有個M 08/11 18:38
73F:→ mainline : DTM 若沒有見到那就是你使用手機的FTP_app本身就不 08/11 18:38
74F:→ mainline : 支援 08/11 18:38
75F:→ mainline : 我剛用solid explorer的FTP插件 搭電腦FTPrush客戶 08/11 18:40
76F:→ mainline : 端 沒問題 rush是要去設定改說你要保留server文件 08/11 18:40
77F:→ mainline : 時間 08/11 18:40
m大你談的FTP部份我都試了 結果都不行欸
1. filezilla的MDTM設定我找到並開啟了 試著上傳 PC(client) -> Phone(server)
日期丟失
2. FTP Rush
https://i.imgur.com/F466jqa.png
日期還是丟失
我爬文時有看到是ftp server要有支援MFMT
client(PC)做上傳動作才會保留mod_date
http://blog.roodo.com/ystuan/archives/6171547.html
https://i.imgur.com/bwvSsTw.png
你的方案是下載時保留mod_date,可是我從手機copy出來本來就沒有date lost的問題
那上傳部份我用solid FTP + FTP Rush/Filezilla 試過都是fail
看來就是手機端ftp server不支援MFMT,那我client端就沒搞頭了
78F:→ mainline : OR 我平常都直接透過solid連windows的SMB傳輸 在升 08/11 18:48
請問SMB是用什麼軟體/界面在傳輸的 關鍵字詳細希望~
79F:→ mainline : 到Oreo後 文件雙向移動的修改時間都獲得保留 手機 08/11 18:48
80F:→ mainline : 是Nexus 5X 谷歌有將fuse換成sdcardfs 在Oreo前 虛 08/11 18:48
81F:→ mainline : 擬SD內的新文件修改時間只能等同創建時間 08/11 18:48
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
所以我現在對ftp也不太抱持希望 只能在client端照mod_date改名的方式將就著用
幸好也還ok
※ 編輯: legendsaga74 (114.39.147.115), 08/11/2018 23:48:01
82F:→ mainline : 啊 我說的FTP部分的確是手機去電腦並保有mod_date 08/12 02:03
83F:→ mainline : 的 因為覺得透過FTP會比webdav便利 08/12 02:03
84F:→ mainline : 要從電腦_client 改 手機_server 的確是要使用MFM 08/12 02:07
85F:→ mainline : T沒錯 就算FTP daemon支援也無解 原因不外乎就是上 08/12 02:07
86F:→ mainline : 面說的 08/12 02:07
87F:→ mainline : SMB - samba 就是windows在局域網共享文件的那個東 08/12 02:12
88F:→ mainline : 西啦 應該與webdav雷同 大概差在兩者是基於不同OS 08/12 02:12
89F:→ mainline : I層級基礎上開發的 08/12 02:12