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

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

  •  
  •   fangyh09 · 2018-10-13 10:19:58 +08:00 · 8824 次点击
    这是一个创建于 2267 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    毕竟 rsync 是差异比对同步,之前复制过的 /同步完成的,则不会被再次传输。
    likuku
        38
    likuku  
       2018-10-13 12:39:46 +08:00
    但,若是 s1 s2 s3 之间是交叉增量互相同步,那么会可能引起版本冲突,那么,最好用 git 之类带版本控制的办法,
    当然,s1 s2 s3 都向同一台 git 服务器提交和下拉同步
    realityone
        39
    realityone  
       2018-10-13 12:41:39 +08:00 via iPhone
    @ymj123 极致速度请用 nc
    necomancer
        40
    necomancer  
       2018-10-13 12:44:17 +08:00
    可以考虑 NFS 系统吗?相当于三个服务器共用硬盘。
    Tink
        41
    Tink  
       2018-10-13 12:46:32 +08:00 via iPhone
    magic wirmhole
    ps1aniuge
        42
    ps1aniuge  
       2018-10-13 13:05:23 +08:00
    问:powershell 经过 ssh,远程运行命令,比 bash 强在哪?
    答:
    =============linux 远程命令 & ps 远程命令 对比例子============
    linux:
    ssh [email protected] "以用户 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 用 [多进程] 快,时间准,省内存。
    ps1aniuge
        43
    ps1aniuge  
       2018-10-13 13:12:00 +08:00
    书接上回。。。

    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 脚本用于,嵌套 远程传值。
    kios
        44
    kios  
       2018-10-13 13:19:20 +08:00
    sshfs 我用的是这个
    jjianwen68
        45
    jjianwen68  
       2018-10-13 13:43:34 +08:00
    nodejs 的 http 服务:node-file-manager 可以同时做上传下载,anywhere 只能下载
    dudesun
        46
    dudesun  
       2018-10-13 13:46:44 +08:00
    tar nc
    adadada
        47
    adadada  
       2018-10-13 14:13:24 +08:00 via iPhone
    cyberduck 可以把远端存储 mount 成到本地,然后在文件管理器里面直接互相拖就可以了。
    chengxiao
        48
    chengxiao  
       2018-10-13 15:27:31 +08:00
    我最近是用 forklift 两边拖
    huyinjie
        49
    huyinjie  
       2018-10-13 16:07:39 +08:00
    SamsonWang
        50
    SamsonWang  
       2018-10-13 16:14:40 +08:00
    我也是 scp,shell 里试试 Ctrl+R,这样每次就只需要改一点点就行了
    264768502
        51
    264768502  
       2018-10-13 17:06:49 +08:00 via Android
    ftp fxp
    ymj123
        52
    ymj123  
       2018-10-13 17:41:25 +08:00 via Android
    @lihongjie0209 对哦,你提醒了我,rsync 可以增量传。应该速度会更快。下周去把脚本命令换了。
    sigup
        53
    sigup  
       2018-10-13 18:30:42 +08:00
    sshfs 挂载到 3 个目录, 然后打开 3 个窗口, 复制粘贴
    zealzz
        54
    zealzz  
       2018-10-13 18:39:27 +08:00 via Android
    以前用 scp 现在用 rsync,增量同步,还是很不错的
    xuanbg
        55
    xuanbg  
       2018-10-13 20:29:17 +08:00
    ftp,nfs,fxp。。。

    办法很多,因地制宜就好了。
    tt0411
        56
    tt0411  
       2018-10-13 22:13:49 +08:00
    scp 也好, nc 也罢, 大家好像都没答到点子上, 感觉楼主只是想找个工具动动鼠标就能复制文件, 而不用敲命令
    ykrl089
        57
    ykrl089  
       2018-10-13 22:36:03 +08:00
    forklift
    hshpy
        58
    hshpy  
       2018-10-13 23:04:00 +08:00 via iPhone
    压缩成一个文件。。。
    ps1aniuge
        59
    ps1aniuge  
       2018-10-14 13:02:32 +08:00
    不管用什么,从 c1 到 c2,

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

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

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

    而 powershell,在 win 上,可以编写 gui 界面。在 mac,linux 上,可以编写 tui 界面。还不用在 c1,c2 上装图形库。
    beginor
        60
    beginor  
       2018-10-15 07:53:50 +08:00 via Android
    glusterfs 了解一下
    l4ever
        61
    l4ever  
       2018-10-15 08:12:41 +08:00 via iPhone
    rsync
    zhouzm
        62
    zhouzm  
       2018-10-15 13:37:37 +08:00
    $> 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 连接服务器,两个面板拖拽一下也挺方便的。
    4ever911
        63
    4ever911  
       2018-10-17 00:01:56 +08:00
    scp alias
    panzhc
        64
    panzhc  
       2018-10-20 11:29:48 +08:00
    编辑 $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
    panzhc
        65
    panzhc  
       2018-10-20 11:31:47 +08:00
    @panzhc 补充一下,
    scp -3 直接支持两台服务器之间拷贝
    配置了 config 以后,登录服务器也很方便,直接 ssh s1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2826 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:50 · PVG 21:50 · LAX 05:50 · JFK 08:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.