使用 qshell 将本地文件同步到七牛云

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/beyond__devil/article/details/83030702
项目升级,打算把 public 目录下的 css、js、image等文件,上传到七牛云,一直想搞来着,今天又想起来,正好 laravel 也从 5.2 升级到了 5.7,接下来把这边一搞,项目就更加优化了。

首先查找文档:

	// 文档中心 - 对象存储
	https://developer.qiniu.com/kodo

	// 技术支持
	https://support.qiniu.com/

	主要是从这 2 个地方,查找相关资料

	关于上传,因为从本地上传文件,需要批量将整个目录上传到七牛云,同时在七牛云上还需要保持跟本地项目的目录结构。查找有没有批量上传的文档:

		// 资源批量上传和多文件上传
		https://developer.qiniu.com/kodo/kb/1374/batch-upload-and-file-upload-more-resources

		// 命令行工具 - qshell
		https://developer.qiniu.com/kodo/tools/1302/qshell

		// 使用 qshell 同步目录
		https://developer.qiniu.com/kodo/kb/1685/using-qshell-synchronize-directories

看几篇文档大概了解了:
	批量上传借助 qshell 命令行工具,这也是我最希望用到的,尤其是以后,能不能通过自动化之前的工具,前端自动化执行完毕之后,再借助 qshell,同时更新七牛云上使用的静态文件。

	我本机是 mac,列出 mac 下安装 qshell 的步骤:

		// 下载
		wget http://devtools.qiniu.com/qshell-v2.1.8.zip

		// 解压
		unzip qshell-v2.1.8.zip

		// 将 qshell-darwin-x64 移动到 /usr/local/bin/qshell
		mv qshell-v2.1.8/qshell-darwin-x64 /usr/local/bin/qshell

		// 更改权限
		chmod +x /usr/local/bin/qshell

		// 查看是否安装成功
		qshell

	qshell 的介绍:

		qshell 的使用,需要配置秘钥,这里分了一个 '单用户模式' 和 '多用户模式':
			单用户模式:
				qshell account ak sk

			多用户模式:
				qshell -m account ak sk

			注意:
				有关多用户模式的介绍,参考文档,我们使用单用户模式。

		qshell 命令选项:
			-d - 设置是否输出DEBUG日志,如果指定这个选项,则输出DEBUG级别的日志
			-m - 切换到多用户模式,这样所有的临时文件写入都在命令运行的目录下(多用户模式的介绍,参考文档,要不这里不理解)
			-h - 查看帮助
			-v - 版本号

		qshell 命令列表:
			account - 设置或显示当前用户的AccessKey和SecretKey(我们上面说的配置秘钥,就使用该命令)
			qupload - 同步数据到七牛空间, 带同步进度信息,和数据上传完整性检查(我们批量上传本地文件,就使用该命令)
			...

			注意:
				qshell 提供了一系列命令,可供我们借助命令行,来进行各种操作,每个命令,都有详细的文档介绍,应该基本都能满足我们的需求。

	利用 qshell 同步本地目录:
		1.单用户模式,配置账户,使用 account 命令
			qshell account ak sk

			// 会在 ~/.qshell/ 下生成一个 account.json 账号配置文件

		2.使用 qupload 命令,进行上传

			参考文档:
				https://github.com/qiniu/qshell/blob/master/docs/qupload.md

			1>创建上传配置文件,我们也创建到 ~/.qshell 目录下
				vim ~/.qshell/qupload.conf

				{
					"src_dir": "/var/www/pinxuejianyou_57/public/",
					"bucket": "test",
				    "skip_path_prefixes": "data,uploads",
				    "skip_fixed_strings": ".htaccess,favicon.ico",
				    "skip_suffixes": ".DS_Store,.gitkeep"
				}

				注意:
					配置项很多,我们需仔细看文档!

			2>执行同步命令
				qshell qupload [ThreadCount] [LocalUploadConfig]

				ThreadCount - 并发上传的协程数量,默认为1,即文件一个个上传,对于大量小文件来说,可以通过提高该参数值来提升同步速度(可选参数)

				LocalUploadConfig - 数据同步的配置文件(必选参数)(本例中我们使用上面创建的 ~/.qshell/qupload.conf)

		3.注意事项:
			1>我们可以指定 'skip_*' 几个配置,来忽略一些文件或目录,切记,多个匹配规则以 ',' 分隔,但是 ',' 两边,不可以有任何空格!!!

			2>同步过程中,我们可能会测试一些上传是否是我们想要的结果,可以使用 qshell 的 listbucket 和 batchdelete 命令,查看&删除,我们上传过的文件,来不断进行测试
				qshell listbucket <空间名> <导出文件名>
				qshell batchdelete -force <空间名> <listbucket 命令导出的文件列表名>

 

展开阅读全文

FTP文件同步,FileSystemWatcher的使用

06-01

[code=C#]rn FileSystemWatcher watcher = new FileSystemWatcher(filePath);rnrn watcher.IncludeSubdirectories = true;//同时监控它的子目录rnrn watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName;//监视的类型rnrn watcher.Created += new FileSystemEventHandler(watcher_Creadted);rnrn watcher.Changed += new FileSystemEventHandler(watcher_Creadted);rnrn private static void watcher_Creadted(object sender, FileSystemEventArgs e)rn rn FileStream fs = null;rn tryrn rn fs = File.OpenRead(e.FullPath);rn rn catchrn rnrn rn finallyrn rn if (fs != null)rn rn fs.Close();rn if (checkFilter(e.Name))//要过滤的文件rn rn tryrn rn lock (db)rn rn if (db.insertFileName(e.Name))//向数据库里面插入待同步的文件rn rn allFileCount = db.getSyncCount();rn rn rn rn catch (DataBase.DatabaseException ex)rn rn log.WriteLine("0 file:1 error:2", System.DateTime.Now, e.Name, ex.Message);//捕获数据库错误rn log.Flush();rn rn rn elsern rn log.WriteLine("0 file:1 filter:2", System.DateTime.Now, e.Name, filter);rn log.Flush();rn rnrn rn rn rn[/code]rn这是做一个监控FTP主服务器程序,如果FTP主服务器,上传了一个文件,那么就同步到其他子服务,rn就是向数据库里面插入待同步文件名是有点问题,数据库表有两个字段,id(自动增长)filename rn比如:我上传一个文件(1.txt)到主服务器,那么数据库里怎么插入2条记录,有时候插入三条记录 都是一样的,这样就上传了三次,因为我要实现追加的功能,所有表filename字段不能设为唯一。rnwatcher.Created += new FileSystemEventHandler(watcher_Creadted);rnrnwatcher.Changed += new FileSystemEventHandler(watcher_Creadted); 论坛

没有更多推荐了,返回首页