首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
V2EX  ›  Linux

服务器间拷贝文件 大家有什么好用的工具推荐吗

  •  
  •   fangyh09 · 126 天前 · 4913 次点击
    这是一个创建于 126 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境: 我本地 macOS 系统 local, 远程服务器 s1, s2, s3

    需求: s1 s2 s3 之间文件互相拷贝

    之前我用的是 scp, 但是每天都需要敲蛮长的命令

    有什么 gui 工具可以直接把 s1 的文件拖到 s2 上吗,现在找到的工具是 local 可以和 s1 文件互拖

    65 回复  |  直到 2018-10-20 11:31:47 +08:00
        1
    ladypxy   126 天前 via iPhone   ♥ 1
    Rsync 啊
        2
    cdwyd   126 天前 via Android
    不说说 s1s2s3 什么系统吗?
    linux rsync
    win 的话我是直接开了 web 服务下载
    另外三台机器相互备份是什么需求?
        3
    fangyh09   126 天前
    每次拷贝的路径不一样
        4
    cdwyd   126 天前 via Android
    @cdwyd 没看到节点。。

    @fangyh09
    有规律就行
        5
    fangyh09   126 天前
    @cdwyd
    s1 s2 s3 是 ubuntu
    不是互相备份,是临时拷贝文件,也就是每次的路径不一样
        6
    myself   126 天前 via Android
    写个脚本
        7
    ffffish   126 天前
    transmit, forklift
        8
    GGGG430   126 天前 via iPhone
    这种情况一般是写一个 shell 脚本,把你常用的拷贝命令封装到里面,而 source,destination,path 之类的就作为参数
        9
    hunk   126 天前
    scp
        10
    fangyh09   126 天前
    @ffffish
    我试过 transmit, 发现 2 个服务器拷贝文件,会经过本地 localhost.
    我希望 2 个服务器之间拷贝。
        11
    fangyh09   126 天前
    @GGGG430 暂时只有这个办法了
        12
    lululau   126 天前
    iTerm2 Shell Integration
        13
    ffffish   126 天前
    @fangyh09 #10 那就 scp 啊
        14
    fangyh09   126 天前
    @lululau
    安装了,但是服务器间能使用吗
        15
    forgetandnew   126 天前
    rsync
        16
    ymj123   126 天前 via Android
    rsync 真的比 scp 好吗?我这边追求极致的速度,都是用的 scp,rsync 比 scp 慢一点点。
        17
    ivlioioilvi   126 天前
    个人倾向用 Rsync,增量同步的。
    Windows 有 cwRsync
        18
    yjd   126 天前 via Android
    为什么不写成 sh
        19
    lihongjie0209   126 天前
    @ymj123 你断点 增量试试
        20
    limbo0   126 天前 via Android   ♥ 1
    关键字 nc 文件传输
    开个命令直接传
        21
    nosay   126 天前
    termius 的 sftp 可以满足需求,但是价格不菲.
        22
    hshpy   126 天前
    alias zsh 自动捕全
        23
    hshpy   126 天前
    错了,忽略。
        24
    liangzi   126 天前 via Android
    rsync 有个 --include-from=file.list 你写好了 file.list 内容 脚本自动同步 即使有变化也只是改 file.list 里面内容
        25
    weyou   126 天前 via Android
    syncthing
        26
    falcon05   126 天前 via iPhone
    filezilla 可以 sftp 传
        27
    diggerdu   126 天前 via iPhone
    不用搞得这么复炸 sshfs
        28
    cabing   126 天前
    nc 命令很方便吧。
        29
    fangyh09   126 天前
    我最后用了 sh+complete
        30
    wyssurvivor   126 天前
    我都 scp
        31
    fangyh09   126 天前
    @nosay 支持服务器间传输吗,我用本地 local
        32
    nosay   126 天前
    @fangyh09 可以的。需要登陆,订阅以后 sftp 功能才会出现。不过可以试用半月。
        33
    TonyLiu2ca   126 天前
    rsync + shell 脚本
    再说这不是互相拷贝,是数据同步吧
        34
    mattx   126 天前
    可以开启 ssh 秘钥转发, 这样服务器就可以直接使用 mac 这里的秘钥. 然后 用 rsync, 写个脚本包装下. 比如
    rsync -atzH --progress -e "ssh -p xxxx" $1 $2 ,和 scp 用法差不多, 但是 rsync 有断点续传挺好的.
        35
    itfanr   126 天前 via Android
    nfs samba cp
        36
    a852695   126 天前
    在 a 机器对应的目录下用,python -m http.server 临时启 server,在 b 机器通过 wget ip:port/file.txt ,可以下载下来。用完可以直接关闭 server 进程。
        37
    likuku   126 天前
    每次路径不同?那么它们有没有个共同的上层目录 /路径?有的话,直接用 rsync 对此上层目录同步到本地即可。

    毕竟 rsync 是差异比对同步,之前复制过的 /同步完成的,则不会被再次传输。
        38
    likuku   126 天前
    但,若是 s1 s2 s3 之间是交叉增量互相同步,那么会可能引起版本冲突,那么,最好用 git 之类带版本控制的办法,
    当然,s1 s2 s3 都向同一台 git 服务器提交和下拉同步
        39
    realityone   126 天前 via iPhone
    @ymj123 极致速度请用 nc
        40
    necomancer   126 天前
    可以考虑 NFS 系统吗?相当于三个服务器共用硬盘。
        41
    Tink   126 天前 via iPhone
    magic wirmhole
        42
    ps1aniuge   126 天前
    问:powershell 经过 ssh,远程运行命令,比 bash 强在哪?
    答:
    =============linux 远程命令 & ps 远程命令 对比例子============
    linux:
    ssh aaa@1.1.1.1 "以用户 aaa 权限执行的,命令 xxx"

    ps:
    $a = 1
    [scriptblock]$备份命令 =
    {
    Get-Date
    $b = $using:a + 2 #引用客户机变量,需要用$using:
    }

    $连接 1 = New-PSSession -HostName 1.1.1.1 -UserName root #手动输入密码或用-KeyFilePath 选项
    invoke-command -ScriptBlock { $备份命令 } -Session $连接 1
    ============================================================
    bash 的远程命令,简单直接。就好像我左手这盘蛋炒饭,简单解饿,但是不够强。更适用于 简单远程命令场合。
    你再看看我右手这盘盖饭好在哪?答:生菜垫底,萝卜雕花围边。
    bash 远程传递的是 [字符串] ,powershell 传递的是 [代码块] 。特色是 [对象垫底,大花括号围边] 。

    字符串传递到远程时,经常需要要转义。代码块不用。
    代码块,支持多行,格式化,使代码美观。
    变量名,函数名支持中文。

    代码块中,支持引用客户端变量,一律加上 [$using:] ,即客户机上的 [$a] ,在服务器上叫 [$using:a]
    代码块中,支持引用服务器端变量,即服务器上的 [$a] ,在服务器还上叫 [$a]
    即使变量重名,两个$a 也绝不会弄混。

    ps 用大花括号包围代码,不用单双引号,代码嵌套很容易。
    而代码嵌套容易,使的 ps 的 ssh 远程,从 server1 (跳板机,堡垒机)经 ssh 进入 server2,再 ssh 进入 server3,进入 33 层 ssh server 执行命令很容易。而 shell 难。

    远程代码天生不老稳定的,有时没反应,或卡住,或中途断了。遇到此情形,每行 ps 代码都可以在外面套上 try-cacth,比 shell 更稳。

    批量 ssh,ps 采用 [多线程] ,比 bash 用 [多进程] 快,时间准,省内存。
        43
    ps1aniuge   126 天前
    书接上回。。。

    1 用 powershell 可以在 win 下编写图形界面。mac 我就不知道了。
    图形界面编写起来很简单,不外乎,源目录,目的目录,是否复制子目录,确定。
    图形界面用于产生值。

    2 上面所述,ps 的 ssh 远程,从 server1 (跳板机,堡垒机)经 ssh 进入 server2,再 ssh 进入 server3,进入 33 层 ssh server 执行命令很容易。而 shell 难。

    从本地,经 ssh 发送命令给 s1,然后让 s1 发送命令给 s2,即可。
    s1 发送给 s2 的命令,是 bash 命令。可以是 rsync,scp 等。也就是大家上面说的。
    ps 脚本用于,嵌套 远程传值。
        44
    kios   126 天前
    sshfs 我用的是这个
        45
    jjianwen68   126 天前
    nodejs 的 http 服务:node-file-manager 可以同时做上传下载,anywhere 只能下载
        46
    dudesun   126 天前
    tar nc
        47
    adadada   126 天前 via iPhone
    cyberduck 可以把远端存储 mount 成到本地,然后在文件管理器里面直接互相拖就可以了。
        48
    chengxiao   126 天前
    我最近是用 forklift 两边拖
        49
    huyinjie   126 天前
        50
    SamsonWang   126 天前
    我也是 scp,shell 里试试 Ctrl+R,这样每次就只需要改一点点就行了
        51
    264768502   126 天前 via Android
    ftp fxp
        52
    ymj123   126 天前 via Android
    @lihongjie0209 对哦,你提醒了我,rsync 可以增量传。应该速度会更快。下周去把脚本命令换了。
        53
    sigup   126 天前
    sshfs 挂载到 3 个目录, 然后打开 3 个窗口, 复制粘贴
        54
    zealzz   126 天前 via Android
    以前用 scp 现在用 rsync,增量同步,还是很不错的
        55
    xuanbg   125 天前
    ftp,nfs,fxp。。。

    办法很多,因地制宜就好了。
        56
    tt0411   125 天前
    scp 也好, nc 也罢, 大家好像都没答到点子上, 感觉楼主只是想找个工具动动鼠标就能复制文件, 而不用敲命令
        57
    ykrl089   125 天前
    forklift
        58
    hshpy   125 天前 via iPhone
    压缩成一个文件。。。
        59
    ps1aniuge   125 天前
    不管用什么,从 c1 到 c2,

    1 得走一个文件传输协议。
    scp 走 ssh。
    ftp 走 fxp。
    rsync 走 rsync,或 ssh。
    http,https 也行。

    2 得搭建服务器 /客户机.

    3 或许得在 c1,c2 上安装基于这个协议的,图形客户端。

    而 powershell,在 win 上,可以编写 gui 界面。在 mac,linux 上,可以编写 tui 界面。还不用在 c1,c2 上装图形库。
        60
    beginor   124 天前 via Android
    glusterfs 了解一下
        61
    l4ever   124 天前 via iPhone
    rsync
        62
    zhouzm   124 天前
    $> man scp
    -3 Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote
    hosts. Note that this option disables the progress meter.

    $> man rsync
    Rsync copies files either to or from a remote host, or locally on the current host (it does not support copying files between two remote hosts).

    也就是说 scp 可以直接在两台远程主机间传输而 rsync 不能。
    建议楼主可以在 mac 上写个脚本快速生成待传输文件列表,再怎么变化总会有一定规律的吧?然后再用 scp 写个传输脚本就可以了。
    当然了,在此之前做好 ssh key 密钥配置免密码登录是必要的。

    另外:
    如果楼主迷恋于 gui 工具的可视直观性。可以试一下 Double Commander (Free) 或者 Commander One (Freemium),使用 sftp 连接服务器,两个面板拖拽一下也挺方便的。
        63
    4ever911   122 天前
    scp alias
        64
    panzhc   119 天前
    编辑 $HOME/.ssh/config
    Host s1
    HostName 1.1.1.1
    User root
    Port 22
    Host s2
    HostName 1.1.1.2
    User root
    Port 22
    Host s3
    HostName 1.1.1.3
    User root
    Port 22

    Mac 上执行
    scp -3r s1:/path s2:/path
    scp -3r s1:/path s3:/path
        65
    panzhc   119 天前
    @panzhc 补充一下,
    scp -3 直接支持两台服务器之间拷贝
    配置了 config 以后,登录服务器也很方便,直接 ssh s1
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2219 人在线   最高记录 4346   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 12:11 · PVG 20:11 · LAX 04:11 · JFK 07:11
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1