Linux 快速复制大量小文件方法 nc+tar
在 Linux 中,使用 nc(netcat)和 tar 可以高效地复制大量小文件。这种方法适用于网络传输和本地复制。以下是详细步骤和示例。
使用 nc 和 tar 复制小文件
1. 准备工作
确保目标系统上安装了 tar 和 netcat。大部分 Linux 发行版默认安装了这两个工具。
2. 在接收方(目标机器)上监听
在目标机器上,使用 nc 监听一个端口,并通过 tar 解压接收到的数据。假设您使用的是端口 12345:
nc -l -p 12345 | tar xvf -
3. 在发送方(源机器)上发送数据
在源机器上,使用 tar 将要复制的文件打包并通过 nc 发送到目标机器的 IP 地址。假设您要复制的文件在 /path/to/files 目录:
tar cf - -C /path/to/files . | nc <目标机器的IP地址> 12345
4. 示例步骤
4.1 在目标机器上
打开终端,运行以下命令来监听端口:
nc -l -p 12345 | tar xvf -
4.2 在源机器上
打开另一个终端,运行以下命令来发送文件:
tar cf - -C /path/to/files . | nc <目标机器的IP地址> 12345
5. 注意事项
- 防火墙配置:确保目标机器的防火墙允许通过指定的端口(如 12345)进行通信。
- 网络安全:使用
nc 进行数据传输时,数据没有加密。如果在不安全的网络上传输敏感数据,考虑使用 ssh 等安全协议。 - 文件权限:在目标机器上接收到的文件将保留源文件的权限和结构。
查询Mongo 用的是什么引擎
MongoDB 使用的是 WiredTiger 存储引擎,这是其默认的存储引擎。WiredTiger 在设计上注重性能和压缩,支持多线程并发和事务,适合高负载和多用户环境。
1. MongoDB 存储引擎概述
1.1 WiredTiger
- 默认存储引擎:从 MongoDB 3.2 版本开始,WiredTiger 成为默认的存储引擎。
特性:
- 高性能:通过多线程和并发控制提高读写性能。
- 数据压缩:支持多种压缩算法(如 Snappy 和 zlib),可以减少存储空间。
- 事务支持:支持 ACID 事务,允许在多个文档之间进行原子操作。
1.2 MMAPv1
- 早期存储引擎:在 MongoDB 3.0 之前,MMAPv1 是默认的存储引擎。
特性:
- 简单性:基于内存映射文件,易于理解。
- 缺点:不支持并发写入,性能较差,且不支持事务。
1.3 其他存储引擎
在 MongoDB 中,还可以使用其他存储引擎,例如:
- In-Memory Storage Engine:专为需要极高性能的应用设计,数据存储在内存中。
- Encrypted Storage Engine:提供数据加密功能,适合需要安全性的场景。
2. 如何查看当前使用的存储引擎
您可以通过 MongoDB shell 查询当前数据库使用的存储引擎:
db.runCommand({ getParameter: 1, storageEngine: 1 })
这将返回当前数据库的存储引擎信息。
Supervisor 进程子进程管理
之前使用 Supervisord 守护 swoole 服务 问题
restart 服务后 master 进程重启了 并拉起新的worker 进程, 但是老的worker 进程并没有kill
我都是通过 shell 脚本实现子进程kill 的工作
就在刚才我同事的服务跪了, 我俩总结了原因 并告诉如下配置, 可以控制子进程
只需要在每个任务配置, 就可以对子进程进程管理.
stopasgroup=true;
killasgroup=true;
Jenkins 配合 Supervisor 上线 swoole 服务 一定要保证所有swoole进程kill 否则由于 Jenkins 版本控制分配不同目录 导致worker 重启后 include 文件 加载失败
学费很贵 2小时 300美刀 记录下
MySQL 查询数据导出为 INSERT 格式文件
在 MySQL 中,您可以将查询结果导出为 INSERT 语句格式的文件。这可以通过多种方法实现,以下是几种常见的方法。
1. 使用 mysqldump
mysqldump 工具可以导出整个数据库或表,并生成 INSERT 语句。
导出整个数据库
mysqldump -u username -p --no-create-info --skip-triggers database_name > output.sql
导出特定表
mysqldump -u username -p --no-create-info --skip-triggers database_name table_name > output.sql
选项说明
-u username:指定数据库用户名。-p:提示输入密码。--no-create-info:不生成 CREATE TABLE 语句。--skip-triggers:不导出触发器。
2. 使用 SQL 查询和 INTO OUTFILE
如果您想导出特定查询的结果,可以使用 SELECT ... INTO OUTFILE 语句。
示例
SELECT
CONCAT('INSERT INTO table_name (column1, column2) VALUES (',
QUOTE(column1), ', ',
QUOTE(column2), ');') AS insert_statement
FROM
your_table
INTO OUTFILE '/path/to/output.sql'
FIELDS TERMINATED BY ''
LINES TERMINATED BY '\n';
说明
CONCAT:构建 INSERT 语句。QUOTE:确保字符串值正确转义。INTO OUTFILE:将结果输出到指定文件。/path/to/output.sql:指定导出的文件路径。
注意事项
- MySQL 服务器需要有写权限到指定的目录。
- 输出文件的路径必须是服务器上的路径,而不是客户端。
3. 使用 GUI 工具
如果您更喜欢图形界面,可以使用一些数据库管理工具,比如:
3.1 phpMyAdmin
- 登录到 phpMyAdmin。
- 选择要导出的数据库或表。
- 点击“导出”选项。
- 选择“自定义”导出方法。
- 在输出格式中选择“SQL”,并确保包含 INSERT 语句。
3.2 MySQL Workbench
- 打开 MySQL Workbench。
- 连接到数据库。
- 在左侧导航栏中右键点击数据库或表。
- 选择“Table Data Export Wizard”。
- 按照向导步骤选择导出选项。
Linux查看实时带宽流量情况
在 Linux 系统中,您可以使用多种工具来查看实时的带宽流量情况。以下是一些常用的方法和工具:
1. iftop
iftop 是一个实时流量监控工具,可以显示网络接口的带宽使用情况。
安装
在 Debian/Ubuntu 系统上:
sudo apt install iftop
在 CentOS/RHEL 系统上:
sudo yum install iftop
使用
运行 iftop,指定要监控的网络接口(例如 eth0):
sudo iftop -i eth0
功能
- 显示实时流量。
- 可以按源或目标 IP 排序。
- 支持过滤特定 IP 或端口。
2. nload
nload 是一个简单的实时网络流量监控工具,可以显示流入和流出的带宽使用情况。
安装
在 Debian/Ubuntu 系统上:
sudo apt install nload
在 CentOS/RHEL 系统上:
sudo yum install nload
使用
运行 nload,指定要监控的网络接口:
nload eth0
功能
- 显示实时流量图表。
- 显示流入和流出的带宽使用情况。
- 支持多个网络接口的监控。
3. vnstat
vnstat 是一个网络流量监控工具,可以记录网络流量并生成统计信息。
安装
在 Debian/Ubuntu 系统上:
sudo apt install vnstat
在 CentOS/RHEL 系统上:
sudo yum install vnstat
使用
首先,启动 vnstat 服务:
sudo systemctl start vnstat
sudo systemctl enable vnstat
然后,查看实时流量:
vnstat -l -i eth0
功能
- 提供历史流量统计。
- 显示实时流量。
- 支持多个网络接口。
4. bmon
bmon 是一个 Bandwidth Monitor 工具,提供实时的带宽监控和统计。
安装
在 Debian/Ubuntu 系统上:
sudo apt install bmon
在 CentOS/RHEL 系统上:
sudo yum install bmon
使用
运行 bmon:
bmon
功能
- 显示实时流量和统计信息。
- 支持图形化显示。
- 可以监控多个接口。
5. iptraf
iptraf 是一个交互式的网络流量监控工具,提供详细的流量统计。
安装
在 Debian/Ubuntu 系统上:
sudo apt install iptraf
在 CentOS/RHEL 系统上:
sudo yum install iptraf
使用
运行 iptraf:
sudo iptraf
功能
- 显示实时流量情况。
- 提供详细的连接信息。
- 支持界面切换。