生物信息学数据
检索生物信息学数据
使用 wget
与 curl
wget
常用来做大文件的下载
基本用法:
bash
wget [options] [URL]
选项 | 作用 |
---|---|
-O <文件名> | 指定下载后的文件名 |
-c | 断点续传 (如果下载中断,可恢复) |
-q | 静默模式(不显示进度) |
--user=<用户名> | HTTP/FTP 认证用户名 |
--password=<密码> | HTTP/FTP 认证密码(或用 --ask-password 交互输入) |
-r | 递归下载(整站抓取) |
-np | 不追溯父目录(配合 -r 使用) |
实际使用例子:
bash
wget -c -O human_chr22.fa.gz http://hgdownload.soe.ucsc.edu/.../chr22.fa.gz
curl
灵活、支持更多协议(如 API 请求)
bash
curl -O <URL> # 下载文件(需用 `-O` 保存,否则输出到终端)
选项 | 作用 |
---|---|
-o <文件名> | 指定输出文件名 |
-L | 跟随重定向(解决 301/302 跳转问题) |
-u <用户:密码> | HTTP/FTP 认证 |
-H "头信息" | 添加 HTTP 请求头(如 API 密钥) |
-d "数据" | POST 请求发送数据 |
-s | 静默模式(不显示进度/错误) |
实际示例:
bash
curl -L -o data.zip https://example.com/download
curl -u username:password ftp://example.com/file.txt
curl -H "Authorization: Bearer TOKEN" https://api.example.com/data
使用 Rsync
与 scp
Rsync 的优势:
- 高效传输:只同步文件的差异部分(增量传输),避免重复传输已有内容,还能压缩文件。
- 保留文件属性:通过
-a
(归档模式)保留权限、时间戳、所有权等信息,适合备份。 - 灵活应对冲突:可设置遇到同名文件时的处理方式(如覆盖、跳过等)。
基本语法:
bash
rsync [选项] 源路径 目标路径
- 源路径/目标路径:可以是本地路径或远程主机地址(格式:用户名@主机IP:/路径/)。
- 常用选项组合
-avz
:-a
:归档模式(保留所有文件属性)。-v
:显示详细进度。-z
:压缩传输以节省带宽。
实际示例:
bash
rsync -avz -e ssh user/data/ deborah@192.168.1.2:/home/data/
将本地目录 user/data
同步到远程主机(IP 192.168.1.2
)的 /home/data
,源路径末尾的 /
表示同步目录内容(不含目录本身),不加 /
会同步整个目录,这里的 -e ssh
指的是使用 SSH 作为传输协议,如果是本地则不需要:
bash
rsync -avz /本地目录/ /另一个本地目录/
数据的完整性与校验
SHA 与 MD5
确保数据完整性最常用的两种校验和算法是 MD5 和 SHA-1,MD5 是一种较老的校验和算法,但仍在广泛使用。MD5 和 SHA-1 的行为类似,但 SHA-1 更新颖,一般更受欢迎。不过,MD5 更为常见
我们可以使用标准流将数据输入给程序 shasum
,从而生成一段字符串
bash
echo "Hello, World" | shasum
4ab299c8ad6ed14f31923dd94f8b5f5cb89dfb54 -
如果 Hello, World
其中任何一个字符发生了改变,哪怕是空格发生了改变,都会导致最后的哈希值不同:
bash
echo "Hello,World" | shasum
2769dfe94bea7ef89c6b628b5d8adbaf18ee628c -
当文件比较多的时候,可以创建一个文件,用来存储哈希值
bash
shasum data/*fastq > fastq_checksums.sha
bash
cat chechsum.sha
6010a2e73cb6e8fee560c04071643a668c9d2f45 sequence_01.fasta
然后使用 -c
参数来校验文件完整性:
bash
shasum -c fastq_checksums.sha
如果出现错误则会提醒,如果不出现错误则为 OK
:
bash
shasum -c chechsum.sha
sequence_01.fasta: OK
压缩数据与解压
Unix 上常用的压缩系统为 Gzip 与 Bzip2,两者各有优势,Gzip 的速度较快;而 Bzip2 的压缩率比较好,适用于归档数据
Gzip 的常见命令:
bash
gzip file.txt # 压缩为 file.txt.gz(原文件会被删除)
gunzip file.txt.gz # 解压
gzip -d file.txt.gz # 等价解压
zcat file.txt.gz # 不解压直接查看内容
Gzip 可以让我们不在解压一个文件的情况下,将另外一个新文件加入到压缩文件中:
bash
gzip -c in2.fastq >> in.fastq.gz
这里需要注意使用 >>
而不是 >
,错误使用 >
会导致原文件被覆盖而不是追加
Bzip2 的命令与 Gzip 的很类似:
bash
bzip2 file.txt # 压缩为 file.txt.bz2(原文件会被删除)
bunzip2 file.txt.bz2 # 解压
bzcat file.txt.bz2 # 不解压直接查看内容
Bzip2 也有一些现代化的替代方案,比如说 XZ:
bash
xz file.txt # 压缩为 file.txt.xz(默认删除原文件)
xz -k file.txt # 压缩并保留原文件(-k, --keep)
xz -9 file.txt # 最高压缩级别(1-9,默认6,数值越大压缩率越高但越慢)
---
unxz file.txt.xz # 解压(删除 .xz 文件)
xz -d file.txt.xz # 等价解压方式
xz -dk file.txt.xz # 解压并保留 .xz 文件
---
xz -T0 file.txt # -T0 使用所有 CPU 线程
pxz file.txt # 需安装 pxz(并行 xz)