前言:
有时会有一些 linux 服务器命令行下传文件日志,过渡文件给自己或他人的临时的需求。
于是找到了2个网站,其实两者都用了好几年了 https://transfer.sh/ 和 https://keep.sh/ ,前者transfer.sh 还一度停服,寻找替代品的过程中找到了后者。
用法非常简单: curl -T abc.txt https://transfer.sh/ 或 curl -T abc.txt https://free.keep.sh/ , 会生成一个临时连接,然后你可以通过链接下载,桌面浏览器也行,curl,wget都可以,文件默认保留24小时。直到前几天,有人说,把日志传到别人的服务器上会不会不好,于是这个五一假期自建了一个,源码是 transfer.sh 提供的,感谢!
部署过程
1,代码地址
代码地址 https://github.com/dutchcoders/transfer.sh/
最新 1.3.1 版是 2021.12.16 发布的,直接下载地址如下
2,跑docker容器
readme 文档快速一拉,看到了有 docker ,第一个想到的就是先拿docker跑起来看看效果。
docker run --publish 8080:8080 dutchcoders/transfer.sh:latest --provider local --basedir /tmp/
谁能想到上面这个命令竟然是错误的,没有映射目录关系,测试上传时会报错,类似如下 0open /tmp/transfer-2017641841: no such file or directory
正确的命令看这里 https://github.com/dutchcoders/transfer.sh/issues/462
docker run -d --restart always --publish 8080:8080 -v "/tmp:/tmp" dutchcoders/transfer.sh:latest --provider local --basedir=/tmp
其他参数好像和docker这边不匹配,不研究了。
3,用 go 跑程序
默认用法
go run main.go --provider=local --listener :8080 --temp-path=/tmp/ --basedir=/tmp/
传文件,当然得https咯,加上证书和空间提供商的玩法参数如下: --provider、 --listener :80 、--tls-listener :443 、--force-https 、--tls-cert-file、--tls-private-key
前几个参数一个不能少,否则有各种坑在等着你,其他参数看官网或者帮助。
最开始网站走了Cloudflare, 发现传大文件有问题,提示 413 Request Entity Too Large,原来 cf 免费用户最高 100mb,开放了几天后还是舍弃大文件,毕竟日志压缩后一般没那么大。
如果有空看到这里,问我自建站的地址,请看图1即可
4,内网服务版
直接下载 平台对应的可执行文件 ,如这个 https://github.com/dutchcoders/transfer.sh/releases/download/v1.3.1/transfersh-v1.3.1-linux-amd64.tar.gz
解压发现是一个可执行的包,这样问题简单多了。
直接跑服务吧, 内网过渡一下,保存时间1小时,至于你问为啥这么干,scp不香么,哎,jumpserver 服务器间传文件的痛苦你会慢慢知道的,sz、rz也不是无需改造直接能用,只有curl是直接可得到的东东。
cat /usr/lib/systemd/system/transfer.service
[Unit]
Description=transfer service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/root/transfer/transfersh-v1.3.1-linux-amd64 --listener :80 --provider=local -temp-path=/tmp/ --basedir=/tmp/ --purge-interval=1 --log=/var/log/transfer.log
[Install]
WantedBy=multi-user.target
然后就是启用服务并启动
# systemctl enable transfer.service
Created symlink from /etc/systemd/system/multi-user.target.wants/transfer.service to /usr/lib/systemd/system/transfer.service.
# systemctl start transfer.service
[root@dce-10-29-8-82 transfer]# systemctl status transfer.service
● transfer.service - transfer service
Loaded: loaded (/usr/lib/systemd/system/transfer.service; enabled; vendor preset: disabled)
Active: active (running) since 四 2022-05-19 20:52:10 CST; 7s ago
Main PID: 2672540 (transfersh-v1.3)
Tasks: 9
Memory: 15.8M
CGroup: /system.slice/transfer.service
└─2672540 /root/transfer/transfersh-v1.3.1-linux-amd64 --listener :80 --provider=local -temp-path=/tmp/ --basedir=/tmp/ -...
5月 19 20:52:10 dce-10-29-8-82 systemd[1]: Started transfer service.
内网测试一下速度吧
上行,得到一个 1小时有效的链接 http://t.ats.io/43xoOW/buodo.tar.gz
下行,1小时内下载有效,速度还行,至少不用装工具。
文章评论