ES数据备份之snapshot和elasticdump

2023-10-27

记录一次使用elaticdump对es集群中的数据进行备份过程

首先我的环境是使用docker启动的es集群的单节点模式,下面为docker-compose文件

version: '2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
    container_name: dockerelk_new_es
    #restart: always
    environment:
      - node.name=es01
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /services/elasticsearch/data:/usr/share/elasticsearch/data
      - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
    ports:
      - 9201:9200
      - 9301:9300

注:这里的data目录一定要记得给上权限,因为是docker启动的,是没有elastic用户的,这里我因为是测试环境我就给了777。

elasticsearch.yml

---
# Default Elasticsearch configuration from elasticsearch-docker.
## from https://github.com/elastic/elasticsearch-docker/blob/master/build/elasticsearch/elasticsearch.yml
#
cluster.name: "docker-cluster"
network.host: 0.0.0.0

# minimum_master_nodes need to be explicitly set when bound on a public IP
# set to 1 to allow single node clusters
# Details: https://github.com/elastic/elasticsearch/pull/17288
discovery.zen.minimum_master_nodes: 1

## Use single node discovery in order to disable production mode and avoid bootstrap checks
## see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
#
discovery.type: single-node

path.repo: /usr/share/elasticsearch/data/backup
path.data: /usr/share/elasticsearch/data
http.cors.enabled: true
http.cors.allow-origin: "*"
reindex.remote.whitelist: ["192.168.159.128:9200","192.168.159.128:9201"]

注:data和backup 前者是存放数据用的,后者是存放snapshot的仓库地址。

下面来查看一下单节点es的运行状态以及端口是否开放

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE                                                 COMMAND                  CREATED       STATUS        PORTS                                            NAMES
9e4b87a2c962   docker.elastic.co/elasticsearch/elasticsearch:7.5.2   "/usr/local/bin/dock…"   10 days ago   Up 23 hours   0.0.0.0:9202->9200/tcp, 0.0.0.0:9302->9300/tcp   test-es
d750d5c11475   docker.elastic.co/elasticsearch/elasticsearch:7.5.2   "/usr/local/bin/dock…"   10 days ago   Up 23 hours   0.0.0.0:9201->9200/tcp, 0.0.0.0:9301->9300/tcp   d750d5c11475_dockerelk_new_es

[root@localhost ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:9201            0.0.0.0:*               LISTEN      1711/docker-proxy
tcp        0      0 0.0.0.0:9202            0.0.0.0:*               LISTEN      1603/docker-proxy
tcp        0      0 0.0.0.0:9301            0.0.0.0:*               LISTEN      1699/docker-proxy
tcp        0      0 0.0.0.0:9302            0.0.0.0:*               LISTEN      1592/docker-proxy
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      896/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1022/master
tcp6       0      0 :::22                   :::*                    LISTEN      896/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1022/master

如果以上查看都没有问题的话,那么就可以开始对于es数据进行备份了。

es数据备份有两种方式,这里我都简单的介绍一下

es备份的两种方法
1.snapshot

优点:通过snapshot拍摄快照,然后定义快照备份策略,能够实现快照自动化存储,可以定义各种策略来满足自己不同的备份需求;
缺点:还原不够灵活,拍摄快照进行备份很快,但是还原的时候没办法随意进行还原,类似虚拟机快照

更详细浏览https://www.elastic.co/guide/en/elasticsearch/reference/7.x/snapshot-restore.html查看

在两个集群注册同样类型的快照仓库,方便之后还原

[root@localhost ~]# curl -X PUT "192.168.159.128:9201/_snapshot/back?pretty" -H 'Content-Type: application/json' -d'
{
  "type": "fs",
    "settings": {
        "location": "/usr/share/elasticsearch/data/backup",
        "compress":"true"
    }
  }
'

查看仓库下所有的快照

[root@localhost ~]# curl -XGET "http://192.168.159.128:9201/_snapshot/_all?pretty" #查看所有已注册的快照仓库
[root@localhost ~]# curl -X GET "http://192.168.159.128:9201/_snapshot/back"     #查看指定快照仓库

es拍摄快照备份

[root@localhost ~]# curl -XPUT http://192.168.159.128:9201/_snapshot/back/snapshot_test20180312

查看拍摄的快照

[root@localhost ~]# curl -XGET 'http://192.168.159.128:9201/_snapshot/back/_all?pretty'
{
  "snapshots" : [
    {
      "snapshot" : "snapshot_test20180312",
      "uuid" : "5htORqn4S3WQ8XoEz4y2PA",
      "version_id" : 7050299,
      "version" : "7.5.2",
      "indices" : [
        "undefined"
      ],
      "include_global_state" : true,
      "state" : "SUCCESS",
      "start_time" : "2021-02-24T06:37:25.239Z",
      "start_time_in_millis" : 1614148645239,
      "end_time" : "2021-02-24T06:37:26.047Z",
      "end_time_in_millis" : 1614148646047,
      "duration_in_millis" : 808,
      "failures" : [ ],
      "shards" : {
        "total" : 6,
        "failed" : 0,
        "successful" : 6
      }
    }
  ]
}

上面是手动进行拍摄快照进行备份,es还提供一种SLM(Manage the snapshot lifecycle/快照生命周期管理),提供一种自动化的快照备份方式。

首先,创建快照备份策略

[root@localhost ~]# curl -X PUT "192.168.159.128:9201/_slm/policy/backup-snapshots?pretty" -H 'Content-Type: application/json' -d'
{
  "schedule": "0 0 0 ? * 2",        #备份的时间
  "name": "<backup-snap-{now/d}>",  #快照的名称格式
  "repository": "back",             #备份的repository
  "config": { 
    "indices": ["*"]                #备份的索引
  },
  "retention": { 
    "expire_after": "14d",          #快照存储的天数
    "min_count": 3,                 #最少存多少快照
    "max_count": 5                  #最多存多少快照
  }
}
'

注:这个快照的备份时间策略,是一个单独的策略,不用于crontab中的分时日月周。下面是对应关系:

“0 0 0 ? * 2” #? 是代表随机的一天 UTC 周日是每周的第一天 UTC时间与北京时间差8个小时
秒 分 时 某月的某日 每月 每周的第二天

既然创建好了快照策略,那咱们就查看一下咱们创建的策略

[root@localhost ~]# curl -X GET "192.168.159.128:9201/_slm/policy?pretty"
  "backup-snapshots" : {
    "version" : 1,
    "modified_date_millis" : 1613628181765,
    "policy" : {
      "name" : "<backup-snap-{now/d}>",
      "schedule" : "0 0 0 ? * 2",
      "repository" : "back",
      "config" : {
        "indices" : [
          "*"
        ]
      },
      "retention" : {
        "expire_after" : "14d",
        "min_count" : 3,
        "max_count" : 5
      }
    },
    "next_execution_millis" : 1615161600000,
    "stats" : {
      "policy" : "backup-snapshots",
      "snapshots_taken" : 0,
      "snapshots_failed" : 0,
      "snapshots_deleted" : 0,
      "snapshot_deletion_failures" : 0
    }
  }
}

策略创建好之后,就可以每天定时查看快照了,如果着急想要查看效果的可以对schedule后面进行修改。

2.elasticdump

优点:相对于snapshot会比较灵活,可以针对不同的index进行备份或者恢复,也可以用于两个集群之间来进行数据的传输。
缺点:无论在备份还是还原的时候,需要注意的点比较多,虽然用起来比较灵活但是使用的时候需要很细心。

首先我们先安装elasticdump,我这里没有用yum安装,我发现yum安装的版本都是2x的,使用npm安装可以安装6.65.3的版本。

安装elaticdump

[root@localhost ~]# yum install epel-release
[root@localhost ~]# yum install nodejs
[root@localhost ~]# yum install npm
[root@localhost ~]# npm install elasticdump

如果直接使用elasticdump命令报错,切换到npm默认安装目录:/usr/local

在使用elaticdump备份之前,需要先做一些准备工作

创建索引

[root@localhost ~]# curl -XPUT '192.168.159.128:9201/first' 

插入数据

[root@localhost ~]# curl -XPOST '192.168.159.128:9201/first/es/1?pretty' -H 'Content-Type: application/json' -d '
  {
           "name": "John Doe"
  }'

使用的方法很简单,仅需提供input以及output即可,还有就是type(不过一般省略type也没事,mapping和data都会过去,如果要用analyzer建议使用完整传输的方式)。下面是使用elasticdump的几个场景

es数据导出到本地 .json文件里,从.json文件导入到es中反过来即可

[root@localhost ~]# elasticdump  --input=http://localhost:9201/first --output=/services/elasticsearch/test3.json   #first为索引名

本地.json文件导入数据到es

[root@localhost ~]# elasticdump  --input=/services/elasticsearch/test3.json --output=http://localhost:9201/first

在两个集群中导入索引

[root@localhost ~]# elasticdump --input=http://ip:9200/first --output=http://127.0.0.1:9200/first   

下面是一个索引完整的数据导入导出的过程

导出分词器

[root@localhost ~]# elasticdump --input=http://ip:9200/my_index --output=http://127.0.0.1:9200/my_index --type=analyzer

导出映射mapping

[root@localhost ~]# elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all=true --type=mapping

导出全部数据

[root@localhost ~]# elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all=true --type=data

如果集群配置了x-pack认证

[root@localhost ~]# elasticdump --input=http://user:password@ip:9200/ --output=http://user:password@127.0.0.1:9200/ --all=true --type=data
使用elasticdump出现的问题:
elasticdump备份数据的时候会出现:
[root@localhost ~]# /usr/local/elasticdump --input=http://192.168.159.128:9201/first/ --output=/services/elasticsearch/test3.json --type=data
Fri, 19 Feb 2021 11:05:28 GMT | starting dump
Fri, 19 Feb 2021 11:05:28 GMT | Error Emitted => {"error":"Content-Type header [] is not supported","status":406}
Fri, 19 Feb 2021 11:05:28 GMT | Total Writes: 0
Fri, 19 Feb 2021 11:05:28 GMT | dump ended with error (get phase) => Error: {"error":"Content-Type header [] is not supported","status":406}

这个问题只有在导出data的时候才会出现,在导出analyzer和mapping的时候不会出现。

因为系统自带的nodejs版本太低,为3.10.10,升级nodejs即可

[root@localhost ~]# npm install -g n
[root@localhost ~]# n latest

下面是三个我写的es备份的脚本,三个各有千秋;第二个和第三个都是从第一个分离出来的,但是功能比第一个要多一点。

es-bak-case.sh

#!/usr/bin/bash

input="http://10.106.107.143:9202"
output="http://10.106.107.143:9201"
all_index="curl -X GET "http://10.106.107.143:9202/_cat/indices?v" | awk '{print$3}' | awk 'NR >= 2{print}' > ./index.txt"

menu() {

cat <<-EOF

+-------------------------------------------------------------+
+  1.sync report                                    +
+  2.sync service                                      +
+  3.sync all                                                 +
+  4.exit                                                     +
+-------------------------------------------------------------+
EOF
}

menu

while :
do
echo "Please enter index option for backup: "
read num
if [ $num -gt 4 ];then
   echo "please enter again!!!"
   echo "Please enter index option for backup: "
fi

case $num in
    1) echo "Backing up report,wait for a moment"
       curl -X DELETE "$output/dsp-rpt-gender"   > /dev/null
       elasticdump --input=$input/report --output=$output/report  --limit=1000 > /dev/null
       echo "Backup complete!"
    ;;
    2) echo "Backing up service,wait for a moment"

       elasticdump --input=$input/service --output=$output/service  --limit=1000 > /dev/null
    ;;
    3) echo "Backing up all index,wait for a moment"
       curl -X GET "http://10.106.107.143:9202/_cat/indices?v" | awk '{print$3}' | awk 'NR >= 2{print}' > ./index.txt
       cat ./index.txt | while read line
           do
               curl -X DELETE "$output/$line"
               elasticdump --input=$input/$line --output=$output/$line       --limit=1000      > /dev/null
           done
    ;;
    4) echo "欢迎使用,祝君工作顺利"
       exit
    ;; 
esac
done

es-bak.sh 脚本执行路径:/services/es-bak

#!/usr/bin/bash
date=`date +%Y%m%d`
input="http://10.106.107.143:9202"
output=/services/es-bak/$date/index
tar_path=/services/es-bak/tar
#date=`date +%Y%m%d`

mkdir -p /services/es-bak/$date/index

curl -X GET "$input/_cat/indices?v" | awk '{print$3}' | awk 'NR >= 2{print}' > /services/es-bak/$date/index.txt

cat /services/es-bak/$date/index.txt | while read line
do
#    echo "Exporting files to the specified directory, please wait..."

    elasticdump --input=$input/$line --output=/services/es-bak/$date/index/es-bak-$date-$line.json   --limit=1000  > /dev/null
#    echo "Export complete!"
done
#echo "Import complete!"
#打包
tar -cvzf  $tar_path/es-bak-$date.tar.gz $date > /dev/null
#回收机制
find $output -mtime +14 -name *.json -exec rm -rf {} \;

es-restore.sh 脚本执行路径:/services/es-bak

#!/usr/bin/bash
echo "请输入还原的时间(格式为'20210301'): "
read date

input=/services/es-bak/$date/index
output="http://10.106.107.143:9201"
tar_path=/services/es-bak/tar

tar -xzf $tar_path/es-bak-$date.tar.gz -C /services/es-bak/

cat /services/es-bak/$date/index.txt | while read line
do
#    echo "Importing from file to es, please wait..."
get=`curl -X GET "10.106.107.143:9201/_cat/indices?v" | grep $line | wc -l`
    if [ $get -eq 0 ];then
        elasticdump --input=$input/es-bak-$date-$line.json --output=$output/$line  --limit=1000 > /dev/null
    else
        curl -X DELETE "$output/$line" > /dev/null
        elasticdump --input=$input/es-bak-$date-$line.json --output=$output/$line  --limit=1000 > /dev/null
    fi

done

#echo "Import complete!"
#清除解压目录
rm -rf /services/es-bak/$date

如果想要全部自动化,可以把交互改成传参即可。

参考文档

https://www.cnblogs.com/JimShi/p/11244126.html

https://github.com/elasticsearch-dump/elasticsearch-dump

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES数据备份之snapshot和elasticdump 的相关文章

  • 如何正确链接 php-fpm 和 Nginx Docker 容器?

    我正在尝试链接 2 个单独的容器 nginx 最新 https registry hub docker com nginx php fpm https registry hub docker com php 问题是 php 脚本不起作用 也
  • 如何真正释放 Linux 中的大页面以供新进程使用?

    真的找不到太多关于此的信息 希望有人可以提供帮助 我正在假脱机使用 100GB java 堆作为大数据缓存 为了避免与文件系统缓存等内容发生冲突 并且因为它通常性能更好 我将其分配在大页面中 我保留了 51 200 x 2MB 大页面 一切
  • sed 仅最后一个匹配模式

    我想sed仅文本文件的最后一个匹配模式 输入文件 boy boy girl boy 输出文件 boy boy girl boys 一种方法是反转文件 仅替换第一个匹配项 然后再次反转 tac
  • ElasticSearch - 仅获取与搜索响应中所有顶级字段匹配的嵌套对象

    假设我有以下文档 id 1 name xyz users name abc surname def name xyz surname wef name defg surname pqr 我只想获取与搜索响应中的所有顶级字段匹配的嵌套对象 我
  • Snap-confine 具有提升的权限,并且不受限制,但应该受到限制。拒绝继续避免权限升级攻击

    我已经使用 snap 一段时间了 但最近升级后 当我尝试打开任何应用程序时 出现此错误 Snap confine has elevated permissions and is not confined but should be Refu
  • 无法在 Windows docker 容器中配置 ASP.NET HTTPS 端点

    在 Windows docker 容器中运行 ASP NET Core 时出现此错误 Unhandled Exception System InvalidOperationException Unable to configure HTTP
  • ElasticCloud 的 ElasticSearch 身份验证错误?

    我刚刚在 ElasticCloud 上设置了一个新的 ElasticSearch 集群 我正在尝试遵循帮助文档 https cloud elastic co help 它说您可以按如下方式发布文档 curl https
  • Alsa 带有来自调制解调器的 PCM 接口

    我有一个基于 imx28 CPU 的定制板 CPU 的串行端口连接到调制解调器的 PCM 输出 我必须为调制解调器的 PCM 接口开发一个驱动程序 使其成为 ALSA SoC 的一部分 您能指出内核树 中与我的设置重新组合的一些驱动程序吗
  • 使用 C++ 输出字符串覆盖 Linux 终端上的最后一个字符串

    假设我有一个命令行程序 有没有办法让我说的时候 std cout lt lt stuff 如果我不做std cout lt lt n 在另一个之间std cout lt lt stuff 东西的另一个输出将覆盖同一行上的最后一个东西 清理行
  • 对 sf:: 的未定义引用

    我想用 C 制作 GUI 应用程序 发现 SFML 是一个不错的选择 幸运的是 我使用的是 Linux 所以 SFML 2 4 已经安装在我的系统上 所以我开始搜索一些教程并找到了一个制作简单窗口的教程 但是当我运行代码时 出现错误 提示未
  • 如何使用libaudit?

    我试图了解如何使用 libaudit 我想接收有关使用 C C 的用户操作的事件 我不明白如何设置规则 以及如何获取有关用户操作的信息 例如 我想获取用户创建目录时的信息 int audit fd audit open struct aud
  • 使用 MongoDB docker 镜像停止虚拟机而不丢失数据

    我已经在 AWS EC2 上的虚拟机中安装了官方的 MongoDB docker 映像 并且数据库上已经有数据 如果我停止虚拟机 以节省过夜费用 我会丢失数据库中包含的所有数据吗 在这些情况下我怎样才能让它持久 有多种选择可以实现此目的 但
  • 测试linux下磁盘空间不足

    我有一个程序 当写入某个文件的磁盘空间不足时 该程序可能会死掉 我不确定是否是这种情况 我想运行它并查看 但我的测试服务器不会很快耗尽空间 有什么办法可以嘲笑这种行为吗 看起来没有任何方法可以在 Ubuntu 中设置文件夹 文件大小限制 并
  • 变量作为 bash 数组索引?

    bin bash set x array counter 0 array value 1 array 0 0 0 for number in array do array array counter array value array co
  • 如何使用 bash 脚本关闭所有终端,在每个终端中有效地按 Ctrl+Shift+Q

    我经常打开许多终端 其中一些正在运行重要的进程 例如服务器 而另一些则没有运行任何东西并且可以关闭 如果您按 重要 则会弹出确认提示Cntrl Shift Q在其中 如下所示 我想要一个 bash 脚本 它可以关闭所有终端 但将 重要 终端
  • Docker OSX:从容器连接到主机端口

    我的问题 我正在尝试在 docker 容器上安装 Flask 应用程序 该应用程序需要通过以下方式安装一些软件包pip https pip pypa io en stable 我在端口 9000 上使用本地 主机 而不是容器 pip 存储库
  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • Windows Server 2016 中的 Docker 无法运行

    我有一个新的 Windows Server 2016 并应用了所有更新 我按照来自的命令快速开始 https learn microsoft com en us virtualization windowscontainers quick
  • 退出 bash 脚本但保持进程运行

    我正在运行服务器 需要使用参数执行以下命令 这些脚本目前工作得很好 但问题是当我运行脚本时我无法返回到控制台 它在控制台中保持运行 如果我强行停止它 那么该过程也会停止 我想继续运行该进程并返回到控制台 bin sh php home st
  • ECS 任务定义是否支持卷映射语法?

    docker compose 规范支持卷映射语法services 例如 version 2 volumes jenkins home external true services jenkins build context args DOC

随机推荐

  • 华为od机考真题-HJ6-质数因子(简单)

    while 1 try num int input c 2 while c lt num 0 5 if num c 0 print c end
  • C++ Primer 学习笔记十五 —— 面向对象编程

    记录笔记原则 1 用简单易懂的语言叙述自己的理解 避免照搬原文 2 用实例说明 避免空洞 3 多做总结和横向对比 避免片面 面向对象三个基本概念 抽象 继承 动态绑定 继承使我们简化了类的定义 动态绑定使我们简化了接口的实现 使得所有继承层
  • 探究java IO之AutoCloseable,Closeable和Flushable接口

    http blog csdn net caiwenfeng for 23 article details 41862225 有3个接口对于流类相当重要 其中两个接口是Closeable和Flushable 它们是在java io包中定义的
  • BQ40Z50/BQ4050/BQ40Z80 等 BQ40xxx 系列电量计外围电路设计指导

    TI 电量计在消费和工业市场电池产品广泛应用 本文围绕电量计的功能逐一介绍电量计供电和 采样 对外交互 电池保护 电池均衡等外围电路设计 以帮助大家优化电量计电路设计 提高 开发效率 FAE 壹伍柒 陆陆贰陆 柒捌贰伍 1 电量计外围电路框
  • GPIO 8种工作模式

    GPIO 是什么 GPIO全称General Purpose Input Output 即通用输入 输出 其实GPIO的本质就是芯片的一个引脚 通常在ARM中所有的I O都是通用的 不过由于每个开发板上都会设计不同的外围电路 这就造成GPI
  • QT——操作数据库03

    目录标题 一 安装数据库 二 连接数据库 一 在项目的pro文件中增加一行代码 二 连接sqlite 三 封装连接数据库操作 三 增删查改例子 一 安装数据库 一般使用mysql或者sqlite mysql安装教程 sqlite安装教程 1
  • 多线程顺序打印的5种解法

    多线程同步的方式有许多 有传统的synchronized锁 还可以使用lock锁 下面列举多线程顺序打印的5种解法 算作对线程同步的一个总结 文章目录 经典面试题 多种解法 使用 Lock 使用 wait notify 使用 Lock Co
  • Win10添加开机自动运行软件三种方法(亲测可用)

    Win10管理开机启动项的方法相信大家已经非常熟悉 msconfig命令各系统都通用 那么很多用户发觉Win10和Win7 XP等系统不同 没有启动文件夹 那么我们怎么添加开机启动项呢 如晨软件或程序没有开机启动设置的话 是的 在Win10
  • JGit Authentication JGit验证机制

    验证机制在JGit中大部分与本地git相同 普遍使用SSH协议和HTTP S 协议和他们所支持的验证方法 这篇文章总结了如何使用JGit的验证API去安全连接远程GIT库 虽然在下面的例子中使用的是CloneCommand方法 但是它能实现
  • pip导包时产生错误,UnicodeDecodeError: 'gbk' codec can't decode byte.....illegal multibyte sequence(已解决)

    主要写了解决问题的思路 解决办法在最底部 pip导入python包时产生错误 ERROR Command errored out with exit status 1 command d python38 python exe c impo
  • 使用CSS3的Flex属性让元素居中

    div div
  • 腾讯云,搭建Docker环境

    安装与配置 Docker 任务时间 10min 20min 安装 Docker Docker 软件包已经包括在默认的 CentOS Extras 软件源里 因此想要安装 docker 只需要运行下面的 yum 命令 yum install
  • 【基于大数据的电信诈骗可视化分析-哔哩哔哩】 https://b23.tv/AxkY2Zj

    基于大数据的电信诈骗可视化分析 哔哩哔哩 https b23 tv AxkY2Zj https b23 tv AxkY2Zj
  • SOLIDWORKS如何定制化异型孔向导及其孔标注

    异型孔向导是SOLIDWORKS中一个极为方便的功能 只需要简单的几步设置就可以根据工程师设定好的标准 类型 大小创建符合标准的孔 包括 柱形沉头孔 锥形沉头孔 直孔 直螺纹孔 锥形螺纹孔等等 此外由于工程图和三维模型的协同关联 生成孔的公
  • Linux Vim 简介

    文章目录 01 编辑器 Gedit 介绍 02 什么是 Vi Vim 03 vim工作模式 4 1 命令模式 4 2 编辑模式 4 3 末行模式 04 vim教程 05 vim基本操作 06 vim实用操作 7 1 命令模式下的操作 7 2
  • Anaconda常用指令(详细讲解!!)这一篇文章就够啦!!!小白,新手一定要看的入门文章~~

    各位小伙伴们大家好 今天给大家分享一些关于Anaconda相关的指令 当使用Anaconda作为Python环境和包管理器时 掌握一些常用的指令可以更好地管理和维护您的开发环境 目录 创建和管理环境 安装和管理包 导出和导入环境 管理包仓库
  • Q3营收同比翻三倍,踩猛“油门”零跑必将领跑?

    近日 零跑汽车公布三季度财报 从财报成绩来看 有喜有忧 喜的是销量营收同比环比均出现大幅度增长 忧的是亏损同比扩大86 11 营收同比猛增398 5 销量能否穿越迷雾 详细来看 三季度零跑汽车销量3 56万辆 同比大增186 营收42 88
  • (C语言)打印锯齿矩阵

    关于锯齿矩阵 咱们先来看看题目要求 最近在参与计蒜客的实践 本题是关于链表 但小编想了好久 技术不精 还是没做出来 于是换成了自己比较习惯的结构体 原理 首先 我们需要记录需要插入的整数对应的行号 和这个整数 我用的是结构体 结构体看起来更
  • du命令

    文章目录 du命令 查看指定目录大小 查看指定文件大小 递归查询文件大小 按指定内存单位查看 打印出total总大小 指定递归层级 人性化输出结果 带单位 只显示文件总大小 s 常用 df命令 查看全部文件系统 单位默认KB 查看指定文件系
  • ES数据备份之snapshot和elasticdump

    记录一次使用elaticdump对es集群中的数据进行备份过程 首先我的环境是使用docker启动的es集群的单节点模式 下面为docker compose文件 version 2 services es01 image docker el