Linux命令小实践

当拿到公司的硬盘数据以后,需要检查数据传输的完整性,然后备份

公司返回的数据包括测序仪的原始下机数据(Raw data)过滤后数据(Clean data)

检查数据传输的完整性就是md5校验,看看数据在拷贝过程中有没有意外的损坏!一般传输数据之前,会用md5命令来生成各个文件的md5值,就是下面的md5_Rawdata.txt和md5_Cleandata.txt文件里面的内容。然后,传输数据之后,需要自行用md5sum -c md5_Rawdata.txt来校验文件里面记录的文件的完整性,如果显示都是OK,说明文件拷贝传输过程是没有问题的。

先看看数据文件的样子吧:

文件夹命名规则:日期_交付合格样本数fqdata(如,20180704_351fqdata为20180704返回351例样本的测序数据)。

原始下机数据:

过滤后数据:

一、准备工作及使用的硬软件信息

1. 查看系统版本等信息

uname -alsb_release -a# Linux localhost 3.10.0-327.18.2.el7.x86_64# CentOS Linux release 7.2.151

2. Shell前端软件包管理器

install tools: yum

3. 移动硬盘格式

NTFS

centos7不支持ntfs格式分区:NTFS-3g是一个开源软件,它支持在Linux下面读写NTFS格式的分区。

二、挂载移动硬盘

参考阅读:

https://blog.csdn.net/yimt_f/article/details/79435793

https://blog.csdn.net/wojiuwangla/article/details/81029603

sudo fdisk -l # 查看硬盘是否被检测到lsblk # 查看磁盘及分区
sudo yum install ntfs-3g # 安装ntfs-3g软件mkdir -p ~/mnt/MegaMeiyin # 新建目录,放挂载硬盘sudo mount -t ntfs-3g /dev/sdb1 ~/mnt/MegaMeiyin # 挂载硬盘,注意区分磁盘和分区的概念

报错内容:/sbin/mount.ntfs: symbol lookup error: /sbin/mount.ntfs: undefined symbol: ntfs_xattr_build_mapping

解决方案:

参考阅读:http://blog.sina.com.cn/s/blog_4b15f0c20102xbi6.html

sudo mv /lib/libntfs-3g.so.88 /lib/libntfs-3g.so.88.unwanted

原理: ntfs-3g-2016.2.22-3.fc25.x86_64.rpm 通过--enable-xattr-mappings 编译。链接库应该是 /lib64/libntfs-3g.so.88, 而不是 /lib/libntfs-3g.so.88 ,系统很有可能安装了两个库,引起冲突。

三、正式核查

1. 公司返回数据的次数

cd ~/mnt/MegaMeiyin/Mega_datals | grep fqdata | wc -l

2. 公司分型成功的样本数

ls | grep fqdata | tr "_" "\t" | cut -f2 | tr "fqdata" " " | paste -s -d + | bc

3. 样本量与文件夹的对应情况

# ~/mnt/MegaMeiyin/Mega_datafind ./ -maxdepth 1 -type d | while read dir;do count=$(find "$dir" -type f | wc -l); echo "$dir:$(((count-3)/4))"; done | tr "_" " "|sort -k1 | tr "fqdata:" " " | awk -F " " '{print NR, $0,($2-$3)}' > sampleCheck.txt
cat sampleCheck.txt# 1 ./20180704 351 351 0# 2 ./20180808 2182 2182 0# 3 ./20180809 2543 2543 0# 4 ./20180817 800 800 0# 5 ./20180818 2003 2003 0# ……

4. MD5校验

# 单个文件夹cd ~/mnt/MegaMeiyin/Mega_data/20180704_351fqdatamd5sum -c md5_Cleandata.txtmd5sum -c md5_Rawdata.txt
# 批量后台运行# MD5耗时较长,简单测试循环是否正确find ./ -maxdepth 1 -type d | sort | tail -41 | while read dir;do cd $dir; echo $dir;cd ..; done
# MD5校验find ./ -maxdepth 1 -type d | sort| tail -41 | while read dir;do cd $dir; md5sum -c md5_Cleandata.txt; cd ..; done > md5CleandataCheck.txt &cat md5CleandataCheck.txt | grep OK |wc -l
find ./ -maxdepth 1 -type d | sort| tail -41 | while read dir;do cd $dir; md5sum -c md5_Rawdata.txt; cd ..; done > md5RawdataCheck.txt &cat md5RawdataCheck.txt | grep OK |wc -l
# 查看后台进程ps -aux | grep md5
(0)

相关推荐