linux本地远程上传&下载阿里云oss的shell脚本实现方法

当项目早服务器中运行时会产生大量的日志,如果日志不处理全部放在本服务器中显然没有那么大的内存,除了要做必要的删除也要做日志必要备份.

创建oss.sh脚本:

#!/bin/bash
host="oss-cn-beijing.aliyuncs.com"
bucket="****"
###bucket名字###
Id="****************"
###Access ID###
Key="******************"
###Access Key###
# 参数1,PUT:上传,GET:下载
method=$1
# 参数2,上传时为本地源文件路径,下载时为oss源文件路径
source=$2
# 参数3,上传时为OSS目标文件路径,下载时为本地目标文件路径
dest=$3

osshost=$bucket.$host

# 校验method
if test -z "$method"
then
    method=GET
fi

if [ "${method}"x = "get"x ] || [ "${method}"x = "GET"x ]
then
    method=GET
elif [ "${method}"x = "put"x ] || [ "${method}"x = "PUT"x ]
then
    method=PUT
else
    method=GET
fi

#校验上传目标路径
if test -z "$dest"
then
    dest=$source
fi

echo "method:"$method
echo "source:"$source
echo "dest:"$dest

#校验参数是否为空
if test -z "$method" || test -z "$source" || test -z "$dest"
then
    echo $0 put localfile objectname
    echo $0 get objectname localfile
    exit -1
fi

if [ "${method}"x = "PUT"x ]
then
    resource="/${bucket}/${dest}"
    contentType=`file -ib ${source} |awk -F ";" ‘{print $1}‘`
    dateValue="`TZ=GMT date +‘%a, %d %b %Y %H:%M:%S GMT‘`"
    stringToSign="${method}\n\n${contentType}\n${dateValue}\n${resource}"
    signature=`echo -en $stringToSign | openssl sha1 -hmac ${Key} -binary | base64`
    echo $stringToSign
    echo $signature
    url=http://${osshost}/${dest}
    echo "upload ${source} to ${url}"
    curl -i -q -X PUT -T "${source}"       -H "Host: ${osshost}"       -H "Date: ${dateValue}"       -H "Content-Type: ${contentType}"       -H "Authorization: OSS ${Id}:${signature}"       ${url}
else
    resource="/${bucket}/${source}"
    contentType=""
    dateValue="`TZ=GMT date +‘%a, %d %b %Y %H:%M:%S GMT‘`"
    stringToSign="${method}\n\n${contentType}\n${dateValue}\n${resource}"
    signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${Key} -binary | base64`
    url=http://${osshost}/${source}
    echo "download ${url} to ${dest}"
    curl --create-dirs       -H "Host: ${osshost}"       -H "Date: ${dateValue}"       -H "Content-Type: ${contentType}"       -H "Authorization: OSS ${Id}:${signature}"       ${url} -o ${dest}
fi

接下来执行shell脚本

上传:sh /oss.sh put /要上传文件/ /到oss指定地址

eg:sh oss.sh put /home/log.zip logs/log.zip
下载:sh /oss.sh get /要下载的文件/ /到linux本地地址
eg:sh oss.sh get /logs/log.zip /home/log.zip

当执行完以上命令出现如下图就代表成功

原文地址:https://www.cnblogs.com/songbao/p/12627876.html

时间: 2024-08-28 23:48:32

linux本地远程上传&下载阿里云oss的shell脚本实现方法的相关文章

JavaScript进阶 九 JS实现本地文件上传至阿里云服务器

JS实现本地文件上传至阿里云服务器 前言 在前面的博客< JavaScript进阶(八)JS实现图片预览并导入服务器功能>(点击查看详情)中,实现了JS将本地图片文件预览并上传至阿里云服务器的操作.这次需要实现将本地打包好的文件上传至阿里云服务器.使用前面的图片文件上传方法无法完成此操作.操作界面如下: 思路 本地与服务端传输文件的格式应该是熟悉的Base64格式.首先需要将本地文件转换为Base64格式,传输至服务端后,在服务端再将Base64格式的文件转换为原始文件. 源码解析 控制器 /

Windows环境下用C#编程将文件上传至阿里云OSS笔记

本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/details/24962567 作者:张建波 邮箱: [email protected]  欢迎来信交流! 第1步: 下载阿里云OSS的SDK包,由于笔者的环境是PHP服务,所以下载的是PHP的SDK包 http://help.aliyun.com/view/13438816.html 第2步:将代码整合进你的网站或服务中. 第3步:配置OSS访问接口 (1)找到c

Java下载https文件上传到阿里云oss服务

今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 实现自己的证书信任管理器类 /** * @author mazhq * @Title: X509TrustUtiil * @ProjectName: zeus * @Description: 证书信任管理器类 * @date 2019/2/18 15:14 */ public class X509TrustUtil implements X509TrustManager { @Overr

一个小工具,利用php把指定目录文件递归上传到阿里云OSS

cp2oss(_GALLERY_DIR); function cp2oss($directory) { $mydir = dir($directory); while($file = $mydir->read()) { if(is_dir("$directory/$file") && $file != "." && $file != "..") { cp2oss("$directory/$file&

Docker之Alpine制作镜像且上传至阿里云

目的: Alpine制作jdk镜像 Alpine制作jre镜像(瘦身) Docker镜像上传至阿里云 Alpine制作jdk镜像 alpine Linux简介 Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBox以减少系统的体积和运行时的资源消耗. alpine Linux优点 1.小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB: 2.安全:面向安全的

Wordpress上传到阿里云服务器

Wordpress上传到阿里云服务器 登录服务器 https://account.aliyun.com/login/login.htm 绑定域名 获取FTP信息.数据库信息 在本地修改wordpress的配置文件wp-config.php 使用FileZilla上传网站文件到服务器 上传到htdocs目录 修改服务器数据库wp-option文件的网址链接,改成您的域名 注:此处不改的话进不了后台 访问域名 在浏览器中输入域名即可访问. 注:有时需要清除浏览器缓存,多次刷新清除尝试. GoodLu

文件上传到阿里云

/// <summary> /// 文件上传 /// </summary> /// <param name="file"></param> /// <param name="fileName"></param> /// <returns></returns> public string FileSaveAliyunOSS(HttpPostedFileBase file,

Linux-21-配置win客户端和linux服务端上传下载文件(L004-03)

1.开启虚拟机Linux服务器,打开SecureCRT远程连接终端服务器: 2.在SecureCRT中打开options中的sessionoptions, 3.在打开的sessionoptions对话框中设置上传(upload)路径和下载(download)路径, 单击OK: 4.在SecureCRT上输入ll命令查看服务器上的文件, 现在将install.log文件下载到刚才在sessionoptions上指定的下载目录: 5.在SecureCRT上输入sz  -y install.log,其

ubuntu SSH 连接、远程上传下载文件

转自:http://www.cnblogs.com/by-1075324834/p/5045096.html 安装 SSH(Secure Shell) 服务以提供远程管理服务 sudo apt-get install ssh SSH 远程登入 Ubuntu 机 ssh [email protected] 将 文件/文件夹 从远程 Ubuntu 机拷至本地(scp) scp -r [email protected]:/home/username/remotefile.txt . 将 文件/文件夹