记录些有用的命令
rsync
rsync -av --progress source/ destination/
cp
命令复制太慢也不显示进度,此命令较快且可以知道进度
参数说明:
-a:
归档模式,保留文件属性(如权限、时间戳等),并递归复制目录。
-v:
显示详细输出,便于跟踪进度。
--progress:
显示复制进度。
为什么 rsync 更快?
增量传输:
rsync 只复制源和目标之间不同的部分,而不是整个文件。
压缩传输:
可以通过 -z 参数启用压缩,减少传输数据量。
高效算法:
rsync 使用高效的算法来比较文件差异,减少不必要的复制。
加速复制的额外选项
**⚪ 启用压缩:**如果复制大量小文件或网络传输,可以启用压缩:
rsync -avz --progress source/ destination/
**⚪ 并行复制:**对于大量小文件,可以使用 –progress 和 –partial 来加速:
rsync -av --progress --partial source/ destination/
**⚪ 多线程复制:**如果需要更快速度,可以使用 rsync 的多线程功能(需要较新版本的 rsync):
rsync -av --progress --partial --inplace --rsh="ssh -T -c aes128-ctr -o Compression=no -x" source/ destination/
**注意事项 ** 源路径的斜杠:
如果源路径以斜杠结尾(如 source/),rsync 会复制目录内容到目标路径。
如果源路径不以斜杠结尾(如 source),rsync 会复制整个目录到目标路径。
目标路径:
如果目标路径不存在,rsync 会自动创建。
网络传输:
如果源和目标位于不同机器,可以通过 SSH 使用 rsync:
rsync -avz --progress -e ssh user@remote:/source/ /destination/
awk
处理大型数据该命令非常高效,且无需其它环境
awk '{sum += ($2 < 0 ? -$2 : $2); count++} END {print sum/count}' data.txt
例如计算data.txt第二列数据绝对值和的平均值,秒出结果!!!
awk
是一种强大的文本处理工具,专门用于逐行处理和分析结构化文本数据(如 CSV、日志文件等)。它的名字来源于其三位创始人 Alfred Aho、Peter Weinberger 和 Brian Kernighan 的姓氏首字母。
awk
的基本工作原理是:
逐行读取输入文件。
根据指定的规则(模式)匹配行。
对匹配的行执行相应的操作(动作)。
awk 'pattern { action }' input_file
**pattern:**匹配行的条件(可选)。如果省略,则对所有行执行 action。
**action:**对匹配行执行的操作(可选)。如果省略,则默认打印匹配的行。
**input_file:**输入文件。如果省略,则从标准输入读取数据。
常用变量 $0:整行内容。
$1, $2, …, $N:第 1、2、…、N 列的内容(默认以空格或制表符分隔)。
NF:当前行的列数。
NR:当前行的行号。
FS:输入字段分隔符(默认是空格或制表符)。
OFS:输出字段分隔符(默认是空格)。
示例文件 假设有一个文件 data.txt,内容如下:
1 10.5 A
2 -3.2 B
3 7.8 C
4 -1.1 D
打印整行
awk '{print $0}' data.txt
打印指定列
打印第二列:
awk '{print $2}' data.txt
条件过滤
打印第二列大于 0 的行:
awk '$2 > 0 {print $0}' data.txt
计算列的平均值
计算第二列的平均值:
awk '{sum += $2; count++} END {print sum/count}' data.txt
修改字段分隔符
如果文件是以逗号分隔的 CSV 文件,可以修改 FS:
awk -F, '{print $2}' data.csv
取绝对值并计算平均值
对第二列取绝对值并计算平均值:
awk '{sum += ($2 < 0 ? -$2 : $2); count++} END {print sum/count}' data.txt
添加行号
打印每行内容并添加行号:
awk '{print NR, $0}' data.txt
多条件匹配
打印第二列大于 0 且第三列是 “A” 或 “B” 的行:
awk '$2 > 0 && ($3 == "A" || $3 == "B") {print $0}' data.txt