rsync和inotify实现文件同步
Rsync介绍rsync是一个为Linux/Unix系统做局部拷贝, 文件同步, 远程文件拷贝, 远程文件同步的命令, 从而实现数据备份或者镜像. 有人说, rsync实际上就是一个高级版的scp命令, 实际上在一定范围内, 这种说法是对的, 那么让我们提出疑问?
rsync能够解决何种问题?
rsync相比scp命令, 有什么优势? rsync是否不仅仅是scp命令那么简单?
rsync的局限性在哪里?
软件开发过程中任何人都不能跳过需求分析, 一款应用必定是在继承传统功能的基础上解决新的问题, 那么让我们先看看scp命令的缺点:
占用大量带宽, 当然, 你可以先进行压缩再进行文件传输
全量拷贝, 速度慢, 占用带宽多, 无法增量备份
rsync能够解决上述提出的问题, 当然, 按照官网的介绍, rsync的主打功能就是增量备份.provides fast incremental file transfer., 通过特殊的算法实现差异同步上传, 常常用于实时性要求不高的分布式集群文件一致性问题, 分布式日志集中化问题, 文件镜像等.
相比scp命令, rsync提供 ...
系统诊断工具概要
本网站相关文章:
IO 相关术语
内存相关术语
内核相关术语
cpu 相关术语
内存监控命令
swap 操作命令
监控工具集
性能在平常开发工作中, 我们实际上很少去关注程序运行的时长, 程序运行的健壮性, 程序运行的资源损耗, 如果程序遇到问题, 大不了关闭调试, 关闭进程, 重新来一遍. 犹记得大四学习的软件工程, 软件开发流程的瀑布模型: 需求分析->设计->实现->测试->整合测试->部署->维护. 在代码开发开发阶段的主要关注点是功能的实现, 关于性能损耗会在设计阶段或者后续测试维护才考虑.
对于小公司, 开发者往往负责了设计, 实现, 测试,整合测试的大部分工作, 因为时间分配的问题, 导致很多项目在前期往往没有很好的考虑程序的性能问题, 只能在后期根据项目的具体使用量来进行优化. 那么,对于一个准备运行或者已运行在线上的项目, 我们有如下的疑问:
我们如何做基准测试, 估计程序的最高处理负载?
我们如何监控线上程序运行性能?
我们如何有针对性的优化线上程序?
这三个问题时刻伴随着每一个开发者, 确保自己开发的程序能够健壮无误的运 ...
DNS-邮件服务搭建: postfix, extmail
Introduction
系统环境: ubuntu 16.04, 腾讯云
有时候我们有如下的需求:
给公司搭建一个邮件服务器, 目前该需求已经大部分被企业邮箱代替了.
批量注册一批邮箱账号, 已进行某些网站的批量注册功能
这时候我们就需要搭建一个自己的个人邮件服务器以解决如上的功能.
系统环境输出:
12345root@mail:~# lsb_release -idrcDistributor ID: UbuntuDescription: Ubuntu 16.04.1 LTSRelease: 16.04Codename: xenial
VPS 网络配置: 在安装软件过程中, 参考的国外友人的配置, 很多源或者包都是国外的, 此时就会导致安装过程非常之慢, 如果不是使用 docker 安装ExmMail的外, 则需要先安装 VPS, 参考以前的文章SSR-PAC.
配置 DNS域名解析在已经拥有一台邮件服务器和域名的前提下, 我们需要先配置 DNS, 配置一个邮件域名mail.unusebamboo.top.配置如下:
添加一个 A 记录, 将mail.unusebamboo.t ...
vpn:终端pac代理配置
站内链接:
vpn(1)-术语
vpn(2)-ss/ssr 服务器配置和客户端连接
vpn(3)-协议实际配置和应用
vpn(4)-pac
vpn(5)-代理协议原理介绍
vpn(6)-adblock 规则
Introduction环境: ubuntu, mac
在代理协议原理介绍一文中介绍过代理相关知识, 那么如何让浏览器和终端都能成功的访问国外网站呢? 如何将 PAC 和终端结合在一起, 实现可控的终端翻墙呢?
考虑如下的终端应用场景 1:
在国内运行服务器
抓取国外的数据
没有专用的正规的 VPN, 或者说买不起
考虑大部分人通用的应用场景 2:
我有一个浏览器
我想上谷歌
是不是想起使用http proxy, 对不起, 你太小看我们伟大的GFW了, 分分钟给你RESET掉, 有时候又是正常访问, 让你一开始以为是自己的配置有问题.
对于第二个需求, 目前通常使用浏览器/app + socks5 的方式来实现科学上网, 这个在后面章节讲述.对于第一个需求, 也是使用 SSR 方式来实现, 因为无奈, 因为没办法(VPN 太贵, HTTP 代理不让走 ...
Shell Command: xrgs
说明从 STDIN 中读取并按照限定符进行分割成 arguments,并调用 utility 执行命令
产生原因很多命令不支持’|’作为标准输入或者命令参数过长,必须借助 xargs 命令:
1234# 错误find /tmp/ -name "*bamboo*" | ls -l# 正确find /tmp/ -name "*bamboo*" | xargs ls -l
关于 find 命令, 见find
操作原理读入 stdin,以空白字符或者换行符作为分界线,切割为 arguments
格式xargs [OPTIONS] [utility [argument ...]]
参数12345678910-a FILE 从FILE中读取输入-E END 设置EOF字符串-t 先打印命令,再执行,蛮有用的-l 每一行最多的argument数目-i/-I 将参数一行一行复制给{},经常使用到,特别是输入非常多的情况下-d 指定分隔符,默认xargs分隔 ...
Shell Command: tar
本网站相关文章:
文件-基本操作集
文件-过滤
文件-find
文件-grep
文件-locate
文件-lsof
文件-redirect
文件-regex
文件-rsync
文件-sed
文件-tar
文件-xargs
功能manipulate(操作) tape(磁带,录音) archives, 其命令格式: tar [options] [FILE] ...
主操作选项
12345-c 创建一个新归档-t 列出归档内容-r 追加文件到归档结尾-u 仅仅追加比归档中副本更新的文件-d 找出归档和现有文件系统的差异
操作修饰符
12-S 高效处理离散文件-n 归档可检索
重写控制
12--overwrite 解压时重写存在的文件-U 在解压要重写的文件之前先删除他们
选择输出流:-O 标准输出流
操作文件属性, 设备分块, 等等.
压缩选项:
123-z 使用gzip压缩-Z ...
File RegExp
本网站相关文章:
文件-基本操作集
文件-过滤
文件-find
文件-grep
文件-locate
文件-lsof
文件-redirect
文件-regex
文件-rsync
文件-sed
文件-tar
文件-xargs
IntroductionDefinity
正则表达式: 描述文本规则的工具,记录文本规则的代码;
通配符: 文本匹配工具,它非常简陋,一般只在文件名匹配中使用;
正则表达式的匹配流程:
正则表达式引擎对 pattern 进行编译, 得到一个正则表达式对象
使用正则表达式对象对需要进行匹配的原始文本进行匹配, 并输出匹配结果
关于正则表达式的匹配原理以及匹配引擎的工作机制不在本文章的讨论范围, 下文仅仅讲述正则表达式的pattern语法, 本文章主要讲述python相关的正则表达式.
Glossary
字符: 一般字符, ., \--转义, [...]--字符集
预定义字符集: \d, \D, \s, \S, \w, \W, 可以放在字符集中
数量词: *, +, ?, {m}, {m,n}, *?, +?, ??, & ...
Redis命令行以及测试例子
站内链接:
redis 配置和安装
redis 命令
redis 消息队列
Stream说明基于 redis 的消息队列有好几种方式:
基于 list 队列的PUSH + POP, 这其中有好几种实现方式, 具体见redis 消息队列说明
基于 Sorted Set 的实现
订阅和发布模式
Stream 实现
其中 Stream 是 redis5.0 新增的支持类型, 其支持消息队列大部分的功能:
消息 ID 的序列化生成, 格式为: 时间戳-序号
消息的遍历
消息的阻塞和非阻塞读取
消息的分组消费
消息队列监控
在演示各个 Stream 命令之前先简单的介绍下 Stream 消息 ID 生成方式和格式:
格式: 1666168208279-0, 时间戳 + 序号, 其中序号表示相同时间戳时(毫秒时间点内)多个消息记录而产生的序列化序号, 这两者都是 64 位整型
相同时间戳多序号都是递增有序的, 一般在 multi 事务中执行时产生
基本命令下面就从 redis 命令角度简单的演示下 Stream 类型操作, 首先时最基本的 CURD 操作.
创建和增加消息
12 ...
ssh-数字证书生成以及https原理介绍
本网站相关文章:
远程自动化工具
ssh 基本安装和配置
ssh 隧道转发功能以及应用
ssh 代理转发介绍及应用场景
ssh 代理中使用 https 以及二级代理的介绍
ssh 数字证书生成以及 https 原理介绍
ftp 安装,原理,配置
ssh 远程执行命令和 bash 工作模式
What is DC?
参考: 数字证书
非对称加密一个 Public Key, 一个 Private Key, 对于原始内容 origin
使用公钥对信息进行加密public_encrypt_origin = PublicKey(origin), 得到 public_encrypt_origin
使用私钥对信息进行加密private_encrypt_origin = PrivateKey(origin), 得到 private_encrypt_origin
此时接收方可以使用Private Key对加密字符串public_encrypt_origin进行解密, 使用Public Key对加密字符串private_encrypt_origin进行解密.
非对称加密不同于对称加密, 后者仅仅存 ...
IDE:各语言插件配置
站内链接:
vim 笔记(1)-命令-基本命令
vim 笔记(2)-命令-ex 命令
vim 笔记(3)-命令-map 映射
vim 笔记(4)-命令-输入模式
vim 笔记(5)-配置-通用配置和术语
vim 笔记(6)-配置-neovim
vim 笔记(7)-IDE:基础插件
vim 笔记(8)-IDE:开发语言相关插件
vim 笔记(9)-IDE:插件管理
C/C++说明和效果基于插件, 如代码检查, 代码补全, 代码浏览等见vim 基础插件中的介绍, 注意任何开发语言环境下的配置都是基于这一份基础配置, 毕竟所有的开发语言都需要代码检查, 代码补全等功能. 最终的 C/C++IDE 效果图如下:
相关插件
Doxygen一款非常好的文档系统, 根据代码中的注释, 搭配Graphviz一键化生成开发文档/类图, 类似 swagger 一样的工具,对文件, 类, 函数,全局变量等进行简单说明,项目完成后,利用源代码以及其中的注释自动生成图文并茂的文档;
DoxygenToolkit
适用语言:c/c++,对 python 不太 ...