环境: 我本地 macOS 系统 local, 远程服务器 s1, s2, s3
需求: s1 s2 s3 之间文件互相拷贝
之前我用的是 scp, 但是每天都需要敲蛮长的命令
有什么 gui 工具可以直接把 s1 的文件拖到 s2 上吗,现在找到的工具是 local 可以和 s1 文件互拖
Rsync 啊
不说说 s1s2s3 什么系统吗?
linux rsync
win 的话我是直接开了 web 服务下载
另外三台机器相互备份是什么需求?
每次拷贝的路径不一样
没看到节点。。
有规律就行
s1 s2 s3 是 ubuntu
不是互相备份,是临时拷贝文件,也就是每次的路径不一样
写个脚本
transmit, forklift
这种情况一般是写一个 shell 脚本,把你常用的拷贝命令封装到里面,而 source,destination,path 之类的就作为参数
scp
我试过 transmit, 发现 2 个服务器拷贝文件,会经过本地 localhost.
我希望 2 个服务器之间拷贝。
暂时只有这个办法了
iTerm2 Shell Integration
那就 scp 啊
安装了,但是服务器间能使用吗
rsync
rsync 真的比 scp 好吗?我这边追求极致的速度,都是用的 scp,rsync 比 scp 慢一点点。
个人倾向用 Rsync,增量同步的。
Windows 有 cwRsync
为什么不写成 sh
你断点 增量试试
关键字 nc 文件传输
开个命令直接传
termius 的 sftp 可以满足需求,但是价格不菲.
alias zsh 自动捕全
错了,忽略。
rsync 有个 --include-from=file.list 你写好了 file.list 内容 脚本自动同步 即使有变化也只是改 file.list 里面内容
syncthing
filezilla 可以 sftp 传
不用搞得这么复炸 sshfs
nc 命令很方便吧。
我最后用了 sh+complete
我都 scp
支持服务器间传输吗,我用本地 local
可以的。需要登陆,订阅以后 sftp 功能才会出现。不过可以试用半月。
rsync + shell 脚本
再说这不是互相拷贝,是数据同步吧
可以开启 ssh 秘钥转发, 这样服务器就可以直接使用 mac 这里的秘钥. 然后 用 rsync, 写个脚本包装下. 比如
rsync -atzH --progress -e "ssh -p xxxx" $1 $2 ,和 scp 用法差不多, 但是 rsync 有断点续传挺好的.
nfs samba cp
在 a 机器对应的目录下用,python -m http.server 临时启 server,在 b 机器通过 wget ip:port/file.txt ,可以下载下来。用完可以直接关闭 server 进程。
每次路径不同?那么它们有没有个共同的上层目录 /路径?有的话,直接用 rsync 对此上层目录同步到本地即可。
毕竟 rsync 是差异比对同步,之前复制过的 /同步完成的,则不会被再次传输。
但,若是 s1 s2 s3 之间是交叉增量互相同步,那么会可能引起版本冲突,那么,最好用 git 之类带版本控制的办法,
当然,s1 s2 s3 都向同一台 git 服务器提交和下拉同步
极致速度请用 nc
可以考虑 NFS 系统吗?相当于三个服务器共用硬盘。
magic wirmhole
问:powershell 经过 ssh,远程运行命令,比 bash 强在哪?
答:
=============linux 远程命令 & ps 远程命令 对比例子============
linux:
ssh [email&"以用户 aaa 权限执行的,命令 xxx"
ps:
$a = 1
[scriptblock]$备份命令 =
{
Get-Date
$b = $using:a + 2 />}
$连接 1 = New-PSSession -HostName 1.1.1.1 -UserName root 选项
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 用 [多进程] 快,时间准,省内存。
书接上回。。。
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 脚本用于,嵌套 远程传值。
sshfs 我用的是这个
nodejs 的 http 服务:node-file-manager 可以同时做上传下载,anywhere 只能下载
tar nc
cyberduck 可以把远端存储 mount 成到本地,然后在文件管理器里面直接互相拖就可以了。
我最近是用 forklift 两边拖
/t/189034
我也是 scp,shell 里试试 Ctrl+R,这样每次就只需要改一点点就行了
ftp fxp
对哦,你提醒了我,rsync 可以增量传。应该速度会更快。下周去把脚本命令换了。
sshfs 挂载到 3 个目录, 然后打开 3 个窗口, 复制粘贴
以前用 scp 现在用 rsync,增量同步,还是很不错的
ftp,nfs,fxp。。。
办法很多,因地制宜就好了。
scp 也好, nc 也罢, 大家好像都没答到点子上, 感觉楼主只是想找个工具动动鼠标就能复制文件, 而不用敲命令
forklift
压缩成一个文件。。。
不管用什么,从 c1 到 c2,
1 得走一个文件传输协议。
scp 走 ssh。
ftp 走 fxp。
rsync 走 rsync,或 ssh。
http,https 也行。
2 得搭建服务器 /客户机.
3 或许得在 c1,c2 上安装基于这个协议的,图形客户端。
而 powershell,在 win 上,可以编写 gui 界面。在 mac,linux 上,可以编写 tui 界面。还不用在 c1,c2 上装图形库。
glusterfs 了解一下
rsync
$> 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 连接服务器,两个面板拖拽一下也挺方便的。
scp alias
编辑 $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
补充一下,
scp -3 直接支持两台服务器之间拷贝
配置了 config 以后,登录服务器也很方便,直接 ssh s1