作者归档:杨龙

高效的简洁的inotify+rsync同步代码

#!/bin/bash
inotifywait -mrq /mnt/www/xxx --format "%w%f %e" -e modify,attrib,close_write,moved_to,moved_from,move,create,delete,delete_self,unmount | while read line
do
  # echo $line
  e=`echo ${line##* }`
  f=`echo ${line% *}`
  if [[ "$f" =~ "/mnt/www/xxx/patchs/" ]] || [[ "$f" =~ "/mnt/www/xxx/release/releases/" ]]; then
    # 排除两个不需要同步的目录
    continue
  fi
  if [[ ! -e "$f" ]]; then
    continue
  fi
  if [[ "$e" =~ "MOVED_TO" ]] || [[ "$e" =~ "CLOSE_WRITE" ]] || [[ "$e" =~ "ATTRIB" ]] || [[ "$e" =~ "CREATE,ISDIR" ]]; then
    rsync -a --delete-after $f f22@host1:$f
    rsync -a --delete-after $f f22@host2:$f
  elif [[ "$e" =~ "DELETE" ]] || [[ "$e" =~ "MOVED_FROM" ]]; then
    rsync --delete -a $f f22@host1:$f
    rsync --delete -a $f f22@host2:$f
  fi
done

Redis小知识

字符串:

一个字符串最大为 512M 字节。

列表:

LPUSH 命令用于插入一个元素到列表的头部,RPUSH 命令用于插入一个元素到列表的尾部。当这两个命令操
作在一个不存在的键时,将会创建一个新的列表。同样,如果一个操作会清空列表,那么该键将会从键空间 (key
space) 移除
。这些是非常方便的语义,因为列表命令如果使用不存在的键作为参数,就会表现得像命令运行在一
个空列表上一样。

列表的最大长度是 2^23-1 个元素 (4294967295,超过 40 亿个元素)。

Redis 集合具有你需要的不允许重复成员的性质。多次加入同一个元素到集合也只会有一个拷贝在其中。实际
上,这意味着加入一个元素到集合中并不需要检查元素是否已存在。

哈希 / 散列 (Hashes):

每个哈希可以存储多达 223-1 个字段值对 (field-value pair)(多于 40 亿个)。

记录

刚刚alert table 创建索引 半路kill了 但是主库成功了 从库没有成功

主库删除索引 从库就停止同步了

马上发现报警 跳过一个错误恢复同步

js 批量打包下载图片一例

<script src="./js/jszip.min.js"></script>
<script src="./js/FileSaver.min.js"></script>
<script src="./jquery/2.1.3/js/jquery.min.js"></script>
<script>
    var zip = new JSZip();
    zip.file("Hello.txt", "Hello World\n");
    var img = zip.folder("images");
    img.file("1.png", getBase64("https://www.baidu.com/img/bd_logo1.png"), {base64: true});
    zip.generateAsync({type: "blob"})
        .then(function (content) {
            // see FileSaver.js
            saveAs(content, "example.zip");
        });


    //传入图片路径,返回base64
    function getBase64(img) {
        function getBase64Image(img, width, height) {//width、height调用时传入具体像素值,控制大小 ,不传则默认图像大小
            var canvas = document.createElement("canvas");
            canvas.width = width ? width : img.width;
            canvas.height = height ? height : img.height;

            var ctx = canvas.getContext("2d");
            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
            var dataURL = canvas.toDataURL();
            var arr = dataURL.split(",");
            return arr[1];
        }

        var image = new Image();
        image.crossOrigin = 'Anonymous';
        image.src = img;
        var deferred = $.Deferred();
        if (img) {
            image.onload = function () {
                deferred.resolve(getBase64Image(image));//将base64传给done上传处理
            }
            return deferred.promise();//问题要让onload完成后再return sessionStorage['imgTest']
        }
    }
</script>

LVM ext4缩容

缩减逻辑卷,xfs不支持,缩减前先unmount

e2fsck -f /dev/vg1/lv1 #检查磁盘错误 (针对ext4执行)
resize2fs /dev/vg1/lv1 100M #更新逻辑卷信息(针对ext4执行)
lvresize -L 100M /dev/vg1/lv1 #重新设定大小

作者:pcct
来源:CSDN
原文:https://blog.csdn.net/lovektm/article/details/78461453
版权声明:本文为博主原创文章,转载请附上博文链接!