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/cn.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灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP