Skip to content

生物信息学数据

检索生物信息学数据

使用 wgetcurl

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

使用 Rsyncscp

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)

最后更新于:

Released under the MIT License.