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 -a
lsb_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_data
ls | grep fqdata | wc -l
2. 公司分型成功的样本数
ls | grep fqdata | tr "_" "\t" | cut -f2 | tr "fqdata" " " | paste -s -d + | bc
3. 样本量与文件夹的对应情况
# ~/mnt/MegaMeiyin/Mega_data
find ./ -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_351fqdata
md5sum -c md5_Cleandata.txt
md5sum -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