Linux 板


LINE

你可能沒注意過這件事情, 不過這幾乎是確定的: scp(1) 不抄 symbolic links! 除非我真的誤會很大! 你可能實在是不需要這種功能, 那就沒話說. 可是你也可能跟我一樣, 偶而需要做這種事 每次需要做這事的時候, 就要再 man scp 一次, 然後再上網爬文, 最後終於再一次確認: scp(1) 不抄 symbolic links! 然後, 你可能也跟我一樣, 看到一堆有的沒有的建議, 其中, 印象最深刻的就是: 為甚麼不用 rsync(1).... 我想大家跟我一樣, 碰到的大部份是檔名的問題... 然後, 如果你問我, 上一次最後是怎麼辦好這件事的? 不好意思, 我還真的說不出來.... 然後, 等到某一天, 又要做這事, 再從頭開始 man scp.... 再複習一次, 原來 scp(1) 不抄 symbolic links.... 另一個曾經多次干擾過我的 scp(1)--行為是: 它不喜歡冒號 $ scp -p "Chopin: Sonata No.2.mp4" another_host:remote_dir/ ssh: connect to host 1.2.3.4 port 22: Connect refused 直到前一陣子有一天, 我痛定司痛(是不是這樣用的?), 寫了個小 script "scp2", 作為當天給自己的 Le Petit Bonheur. 並決定採用以 tar(1) 打包, 再以 ssh(1) 投放, 的方式進行, 其實就只有一行: tar cf - "$@" | ssh "$HOST" "(cd ${DIR+\"$DIR\"} && tar xvf -)" 現在的問題是, 我們當然希望是跟原來 scp 一樣的語法, 這個對我很重要. 還好, syntax 的問題可以解決, 而且是抄別人的 (oguz ismail, 2020-06-06) 我實在不想縮網址, 但又很想要引用, 因為他只得兩推太不公平.... :( https://stackoverflow.com/questions/62227556/assign-last-positional-parameter-to-variable-and-remove-it-from 所以, 以下的 script, 只有最後3行是我寫的 而且, 希望沒有 bashism, 請大家幫檢查看看 有甚麼可以改善的, 一定要告訴我! ------ cut ------- begin scp2 ------------ #!/bin/sh if [ $# -lt 2 ] then # echo >&2 "usage: scp2 source ... target" echo >&2 "usage: scp2 local... remote" exit 1 fi count=0 until test $((count+=1)) -ge $# do set -- "$@" "$1" shift done LAST=${1-} shift $((!!$#)) HOST=$(echo $LAST | sed 's/:.*$//' ) DIR=$(echo $LAST | sed "s/^.*://") #tar cf - "$@" | ssh "$HOST" "(cd ${DIR+\"$DIR\"} && tar xvf -)" tar cf - "$@" -P --transform="s|^/\?$(dirname "$1")/||" |\ ssh "$HOST" "(cd ${DIR+\"$DIR\"} && tar xvf -)" -------- cut -------- end scp2 -------------- --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.172.21.14 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1655048383.A.3F1.html
1F:→ cuello: 沒有 options, 有需要的話, 就寫在 ~/.ssh/config 裡了 06/12 23:44
2F:推 changchichun: 痛定「思」痛 06/13 09:17
3F:→ cuello: :) 謝謝 06/13 12:09
4F:→ bitlife: 其實scp沒有複製symlink算合理,因為source和target的檔案 06/13 12:15
5F:→ bitlife: 系統有可能不同,例如target可能是掛載fat32之類 06/13 12:16
6F:→ bitlife: rsync就命令名稱來說,既然要sync,兩邊檔案系統要相容,但 06/13 12:19
7F:→ bitlife: 還是用option來解決有可能出問題的link,這樣可以把它將級 06/13 12:20
8F:→ bitlife: 當一般copy用 06/13 12:20
9F:→ bitlife: *降級 06/13 12:20
Hmmm... 倒是沒想過這設計哲學的問題... 不過 scp 也不是 rsync scp(1) 應該很適合跨平台操作吧? 頂多, 在使用者堅持 preserve 太多的 attributes 的時候 (scp -p) 囉唆一下, 例如: set times: Operation not permitted 至於 rsync, 嘿嘿, 不好意思, 跨不同檔案系統的操作其實是我的日常也... 只要自己心裡有數, 甚麼過得去, 甚麼是強人所難... 在設計上, 應該可以說, 連 rsync 都有意適度容忍跨越不同檔案系統的操作, 正因為如此, 碰到困難時才只是抱怨「恕難照辦」而不是直接 abort 吧. 有空時, 請幫我試試看會出甚麼問題喔~ 目前感覺還蠻好用的喔... ※ 編輯: cuello (218.172.25.44 臺灣), 06/13/2022 21:43:53
10F:推 holishing: 是說某版的 OpenSSH 開始 scp 就不是 scp 了, 而是套著 06/14 23:42
11F:→ holishing: scp 外殼的 sftp, 所以不如現在開始練習放棄 scp ( 06/14 23:42
是喔, 謝謝告知. 可是能不能不放棄啊? 他們應該會好好保留 scp 的「殼子」吧 UNIX 世界應該很少發生這種中斷吧...如果是安全的問題, sftp 骨子裡不是解決了? ※ 編輯: cuello (218.172.25.44 臺灣), 06/15/2022 23:33:58
12F:→ asdfghjklasd: 你這話前後矛盾喔 06/16 10:40
13F:→ asdfghjklasd: https://lwn.net/Articles/835962/ 06/16 10:40
Aha! 感謝 pointer! 倒也沒有矛盾, 只是很狀況外罷了! 我lag了好幾年.. 原來這件事已經醞釀(?)那麼久了... 要不是禮拜天決定 po 文. 還真的錯過 Jonathan Corbet 的文章跟這整件事情的進展 不過你知道, 我手指頭的肌肉跟神經元不會喜歡的... 搞不好是普遍性的 所以有 holishing 的 「開始練習放棄」... 雖然對於某些人來說 可能是練習放氣 backtick 的遠端執行 :) 在我單純的環境裡, 這似乎不構成令人緊張的威脅, 我猜最後的結果是: 我會... 不是! 是我的手指頭會用 scp(1) 直到它被消失的那一天... 吧... 不果, 這件事反而意外突顯了我的「小確幸」scp2(1) 的重要性 等到那一天, 雖然不能夠 $ sftp * remote: 起碼我還可以 $ scp2 * remote: ※ 編輯: cuello (218.172.4.188 臺灣), 06/16/2022 23:04:49 忘了提, scp2 是單向的 local --> remote. ※ 編輯: cuello (218.172.4.188 臺灣), 06/16/2022 23:06:15 剛剛再試了一下, 到時候, 還好我還可以繼續做這事: $ pwd /boot/ $ scp2 [vcS]*-5.10.122 root@remote:/boot/ 有一個 scp 真好... root!? 偷懶啦, 已經儘量藏, 不在 22... ※ 編輯: cuello (218.172.4.188 臺灣), 06/17/2022 00:00:48 ※ 編輯: cuello (218.172.4.188 臺灣), 06/18/2022 12:43:06
14F:→ asdfghjklasd: scp 其實可以 remote local .... 06/18 17:25







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP