簡體   English   中英

如何判斷文件是否在Perl的遠程文件系統上?

[英]How can I tell if a file is on a remote filesystem with Perl?

在shell腳本或Perl中,是否有一種快速而簡單的方式來判斷路徑是位於遠程文件系統(nfs等)還是本地路徑? 或者是唯一的方法來解析/ etc / fstab並檢查文件系統類型?

stat -f -c %T <filename>應該做你想要的。 你可能也想要-l

您可以使用“df -T”獲取目錄的文件系統類型,或使用-t選項將報告限制為特定類型(如nfs),如果它返回“沒有處理文件系統”,那么它不是一個你要找的那些。

df -T $dir | tail -1 | awk '{print $2;}'

如果在目錄上使用df來獲取它所駐留的設備的信息,例如當前目錄:

df .

然后,您可以解析輸出,例如

df . | tail -1 | awk '{print $1}'

獲取設備名稱。

我在solaris7,8,9和10上測試了以下內容,它似乎是可靠的

/bin/df -g <filename> | tail -2 | head -1 | awk '{print $1}'

應該給你有fs類型,而不是嘗試匹配你的掛載點中的“host:path”。

在某些系統上,NFS文件的設備編號為負數。 從而,

print "remote" if (stat($filename))[0] < 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM