shell遍历目录下所有文档进行sed修改

最近博客换成hexo静态博客,把以前文章导出来了,并对文章归类存到不同文件夹,文章的图片是存放在七牛的,由于七牛的测试域名也被回收了,现在想把目录下所有文章里面七牛的图片链接,换成自己的URL。所以写了个脚本进行递归修改。

快速传送大数据

远程拷贝数据的时候,我们一般使用rsync命令,但是如果拷贝大量的小文件,会导致rsync的传输速度慢。使用tar pv lz4打包压缩传输,可以解决这问题,使用这个方法,等同于使用scp、rsync传输大文件。

实测,使用rsync传输1200G,单个文件大小为几十KB~2GB,千兆网卡,需要同时跑6个rsync才能把带宽跑满,每个速度20MB左右,速度波动大。每分钟可以拷贝4.5GB左右。
但是,使用tar pv lz4,跑一个就可以了,而且速度波动小。每分钟可以拷贝6.8GB左右。

hexo博客文章写作流程

流程图

post-plan

流程图解释:
git仓库,保存文章md文件、图片原稿。仓库目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
shaoyange:git yan$ tree www.xsy.me/ -d
www.xsy.me/
├── _posts
│   ├── database
│   │   ├── mysql
│   │   └── redis
│   ├── default
│   ├── hexo
│   ├── k8s
│   ├── kvm
│   ├── linux
│   │   ├── service
│   │   │   ├── apache
│   │   │   ├── cobbler
│   │   │   ├── ftp
│   │   │   ├── nginx
│   │   │   ├── php
│   │   │   ├── tomcat
│   │   │   └── vpn
│   │   ├── system
│   │   └── tool
│   ├── python
│   └── tools
│   └── git
└── image
└── default

【kvm系列01】之安装kvm

环境说明

  • 硬件配置:
    使用虚拟机VMware workstations pro 14做实验。配置为
    • cpu:2核心
    • 内存:8G
    • 硬盘:系统盘20G,数据盘100G
  • 软件配置:
    • ip:192.168.176.21
    • hostname: vm21
    • 系统版本: CentOS Linux release 7.5.1804 (Core)

hexo博客搭建笔记

hexo的优点

  • 1.支持markdown语法。最重要的一点。
  • 2.有丰富的主题
  • 3.有本地web服务器,可以本地预览生成的博客
  • 4.基于node.js,装上node.js就可以安装hexo
  • 5.可以发布推送到GitHub或者个人服务器上

安装hexo

下载并安装 nodegit客户端

node.js官网:https://nodejs.org/ 下载LTS版安装即可。
githttps://git-scm.com/

安装完 git 后,打开 Git Bash,

1
2
3
4
5
$ node -v
v8.11.4

$ git --version
git version 2.15.0.windows.1

替换node源

访问国外源速度较慢,建议安装淘宝的cnpm源,以后使用cnpm命令代替npm

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

安装hexo

1
2
3
4
5
6
7
8
9
10
cnpm install hexo-cli -g
$ cd /k/shaoyange/ # 是个空目录
Administrator@DESKTOP-UATEL4V MINGW64 /k/shaoyange
$ hexo init
$ cnpm install
$ cnpm install hexo-deployer-git --save # 安装 git 部署支持
$ hexo g # 生成博客
$ hexo s # 启动本地 web 服务器
INFO Start processing
INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.

浏览器打开http://localhost:4000就可以访问了。

配置hexo博客

  • 安装yelee主题
    1
    2
    Administrator@DESKTOP-UATEL4V MINGW64 /k/shaoyange
    $ git clone --depth 1 https://github.com/MOxFIVE/hexo-theme-yelee.git themes/yelee

本地访问

流程

  • post目录K:\shaoyange\source\_posts 添加以md为结尾的文件。
  • 打开git bash 切换到hexo博客目录
    • 执行hexo g生成博客
    • 执行hexo d发布博客

图片

图片存放:

  • 本地存放路径K:\shaoyange\source\upload下的子目录等
  • 线上路径:本地编辑使用相对路径,生成、发布博客前,替换为绝对路径。
    例如:本地文章图片路径为../../upload/image/1.png生成、发布前,替换为/upload/image/1.png

  • 使用七牛cdn 加速,可以在nginx rewrite配置匹配/upload 目录,并把域名替换

本地使用

  • 打开git bash 切换到hexo博客目录
    • 执行hexo g生成博客
    • 执行hexo d发布博客
    • 执行hexo s即可本地访问,执行后会有访问链接提示http://localhost:4000

使用流程

两个仓库

  • hexo 初始化的仓库。
  • doc 仓库为:编写文章仓库,包括图片。公司和家里,用这个仓库同步编写。
  • doc 仓库下面写文章,写好后,复制到hexo生成、发布。

【Pyspider爬虫02】小试牛刀-抓取标题和URL

简单试一下。就抓取自己的博客文章的标题和相应URL

上代码代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2017-10-11 17:19:20
# Project: TEST01

from pyspider.libs.base_handler import *


class Handler(BaseHandler):
crawl_config = {
}

@every(minutes=24 * 60)
def on_start(self):
self.crawl('https://www.xsy.me/', callback=self.index_page)

@config(age=10 * 24 * 60 * 60)
def index_page(self, response):
for each in response.doc('h2 > a[href^="http"]').items():
self.crawl(each.attr.href, callback=self.detail_page)

@config(priority=2)
def detail_page(self, response):
return {
"url": response.url,
"title": response.doc('h2').text(),
}

【Pyspider爬虫01】CentOS7上安装pyspider

前言:最近想用爬虫爬点东西,所以部署上 pyspider 学习一下。

说明:系统环境 CentOS7.3

安装pyspider

1
2
3
4
5
6
7
8
9
[root@test-server ~]# yum install epel-release   # 安装扩展源
[root@test-server ~]# yum install python-pip python-devel python-distribute libxml2-devel python-lxml # 安装依赖
[root@test-server ~]# pip install --upgrade pip # 更新pip
[root@test-server ~]# pip install pyspider # 安装pyspider
# 提示安装了
Successfully installed Flask-0.12.2 Flask-Login-0.4.0 Jinja2-2.9.6 MarkupSafe-1.0 Werkzeug-0.12.2
backports-abc-0.5 certifi-2017.7.27.1 click-6.7 defusedxml-0.5.0 itsdangerous-0.24 pyquery-1.2.17
pyspider-0.3.9 requests-2.18.4 singledispatch-3.4.0.3 tblib-1.3.2 tornado-4.5.2
u-msgpack-python-2.4.1 urllib3-1.22 wsgidav-2.2.4

运行 pyspider

1
2
3
4
5
6
7
8
9
[root@test-server ~]# pyspider     # 运行pyspider
[W 170927 17:57:57 run:413] phantomjs not found, continue running without it.
[I 170927 17:57:59 result_worker:49] result_worker starting...
[I 170927 17:58:00 tornado_fetcher:638] fetcher starting...
[I 170927 17:58:00 processor:211] processor starting...
[I 170927 17:58:00 app:76] webui running on 0.0.0.0:5000
[I 170927 17:58:00 scheduler:647] scheduler starting...
[I 170927 17:58:00 scheduler:782] scheduler.xmlrpc listening on 127.0.0.1:23333
[I 170927 17:58:00 scheduler:586] in 5m: new:0,success:0,retry:0,failed:0

这里运行一下进行测试,测试完成就关了吧。因为默认是没有认证的。得配置,后面文章跟进。

遇到的问题

1
2
3
4
5
6
7
8
9
[root@test-server ~]# pyspider
Traceback (most recent call last):
File "/bin/pyspider", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 3011, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 630, in resolve
raise VersionConflict(dist,req) # XXX put more info here
pkg_resources.VersionConflict: (chardet 2.2.1 (/usr/lib/python2.7/site-packages), Requirement.parse('chardet>=3.0.2,<3.1.0'))

解决方法:

1
2
3
4
5
6
7
8
9
[root@test-server ~]# pip install --upgrade chardet
Collecting chardet
Downloading http://pypi.doubanio.com/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
100% |################################| 143kB 2.5MB/s
Installing collected packages: chardet
Found existing installation: chardet 2.2.1
Uninstalling chardet-2.2.1:
Successfully uninstalled chardet-2.2.1
Successfully installed chardet-3.0.4

ok 再次运行成功:

1
2
3
4
5
6
7
8
[root@test-server pyspider]# pyspider 
[W 171011 17:13:32 run:413] phantomjs not found, continue running without it.
[I 171011 17:13:34 result_worker:49] result_worker starting...
[I 171011 17:13:35 tornado_fetcher:638] fetcher starting...
[I 171011 17:13:35 processor:211] processor starting...
[I 171011 17:13:35 scheduler:782] scheduler.xmlrpc listening on 127.0.0.1:23333
[I 171011 17:13:35 scheduler:647] scheduler starting...
[I 171011 17:13:35 app:76] webui running on 0.0.0.0:5000

通过浏览器访问:ip:5000,看到下图

QQ截图20171011174050.png

Ubuntu开机自动更新SVN仓库

基本上是每次开机就要更新 SVN 仓库,所以偷个懒,进入系统时自动更新一下。

编写更新脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
yan@chmod:~$ cat .svn_up.sh 
#!/bin/bash

# update coding
cd ~/1-svn/coding
echo '############### starting update coding... ####################' >>~/svn_update.log
svn up >>~/svn_update.log
echo -e `date "+%Y-%m-%d %H:%M:%S"` ' 更新 coding 完成\n' >> ~/svn_update.log

# update doc
cd ~/1-svn/doc
echo '------------------ starting update doc... ---------------------'>>~/svn_update.log
svn up >>~/svn_update.log
echo -e `date "+%Y-%m-%d %H:%M:%S"` ' 更新 doc 完成\n' >> ~/svn_update.log
cd ~

开机登录用户时调用脚本

1
yan@chmod:~$ echo '/bin/bash /home/yan/.svn_up.sh' >> .profile
|