为什么我会写这篇文章
说实话,刚开始接触 Tails 的时候,我也被那个“唯一存储”的概念搞得晕头转向。你插在 USB 上的那个系统,看起来干净得像刚出厂的电脑,但如果你想把之前 Windows 里的照片、文档,或者 Mac 上的密钥链数据搬过去,该往哪儿塞?
Tails 的设计哲学是“不留痕迹”,但这不代表它无法处理数据迁移。相反,它有一套非常严谨的数据导入导出机制。今天我就手把手带你走过这段路,不管是 Windows、macOS 还是 Linux,咱们都能把数据安全、干净地搬到你的 Tails 世界里,然后再把需要的东西拎出来。
Tails 的核心存储逻辑:这里没有“C盘”
在动手之前,你必须先理解 Tails 是怎么存东西的。这和传统操作系统完全不同。
传统的 Windows 或 macOS,你的文件散落在硬盘的各个角落,C盘、D盘、桌面、下载文件夹……而在 Tails 里,情况非常特殊:
1. 持久化存储(Persistent Storage) 这是你唯一可以长期存放加密文件的地方。它不是一个普通的文件夹,而是一个经过 LUKS 加密的卷。你需要设置一个“持久化密码”来解锁它。只有解锁了,你才能在 Tails 里看到里面的内容。
2. 非持久化会话 每次你从 USB 启动 Tails,你都会得到一个全新的、干净的工作环境。你的浏览历史、下载的文件、临时文档,一旦重启,统统消失。这就是所谓的“无痕”。
3. 外部存储设备 除了 USB 里的 Tails 系统本身,你还可以插入其他的 USB 硬盘、SD 卡、或者通过 Samba 网络连接 NAS。这些外部设备里的文件,是导入到 Tails 工作环境的“原材料”。
所以,所谓“导入导出”,本质上就是:
- 导入:把你的外部存储设备(比如你的旧 Windows 电脑里的文件,或者你之前存好的备份盘)里的文件,复制进 Tails 的持久化存储中。
- 导出:把你持久化存储里的文件,复制回外部存储设备,或者通过网络发送出去。
准备工作:你需要什么
在开始之前,请确保你手边有以下东西:
- 你的 Tails USB 设备:已经安装好了 Tails 系统。
- 你要迁移数据的那台电脑:Windows、Mac 或 Linux 都行。
- 一个额外的 USB 存储设备(可选但推荐):比如一个 U 盘或移动硬盘。你可以把旧电脑的数据先拷到这个 U 盘里,然后再插到 Tails 上导入。这样更安全,也避免了直接挂载旧电脑的硬盘可能带来的风险。
- 你的持久化密码:如果你之前设置过 Tails 持久化,请记得密码。如果没有,我们这次可以顺便创建一个。
第一步:从 Windows 系统导出数据
假设你的旧数据都在 Windows 电脑上。我们有两种主要的导出方式。
方式 A:直接拷贝到外部 USB 硬盘(推荐)
这是最安全、最不容易出错的方法。
- 插入 USB 硬盘:找一个足够大的 U 盘或移动硬盘,插入你的 Windows 电脑。
- 格式化(如果需要):如果这个硬盘是 NTFS 格式,Tails 可以直接读取。如果是 exFAT 或 FAT32,也没问题。但如果你的硬盘是 macOS 的 APFS 或 Windows 的 BitLocker 加密的,Tails 可能读不了。所以,强烈建议你在 Windows 上把这个硬盘格式化为 NTFS 或 exFAT,这样兼容性最好。
- 注意:格式化会清除硬盘上所有数据,请先备份。
- 复制文件:打开“此电脑”,找到你的旧文档、照片、密钥、SSH 密钥等,全部复制到这个 USB 硬盘里。
- 安全弹出:在任务栏右下角,点击“安全删除硬件并弹出媒体”,等待提示后再拔掉 USB 硬盘。这一步很重要,否则数据可能还没写完就拔了,导致文件损坏。
方式 B:通过 Samba 网络共享
如果你的 Windows 电脑和你要用 Tails 的电脑在同一个局域网内,你可以通过 Samba 共享文件夹。
在 Windows 上开启共享:
- 右键点击你想共享的文件夹 -> “属性” -> “共享” -> “高级共享” -> 勾选“共享此文件夹”。
- 记下电脑的 IP 地址(在命令行输入
ipconfig,找到 IPv4 地址,比如192.168.1.100)。 - 确保共享权限里,有“读取”权限的账号。
在 Tails 上挂载共享:
- 启动 Tails,插入你的持久化 USB(如果有的话),并解锁持久化。
- 打开“文件”应用,在左侧找到“其他位置”。
- 在地址栏输入:
smb://192.168.1.100/共享文件夹名 - 输入 Windows 的用户名和密码。
- 成功后,你会看到这个共享文件夹,然后你就可以把里面的文件复制进 Tails 的持久化存储了。
小贴士:Samba 方式有时候网络驱动不太稳定,尤其是 Tails 的 Tor 网络会限速。如果文件很大,还是用方式 A 靠谱。
第二步:从 macOS 系统导出数据
macOS 用户稍微有点麻烦,因为 Mac 默认用的是 APFS 或 HFS+ 文件系统,Tails 原生不支持写入,只读支持也很有限。
方式 A:拷贝到外部 USB 硬盘(最常用)
- 插入 USB 硬盘:找一个 U 盘或移动硬盘,插入 Mac。
- 格式化硬盘:
- 打开“磁盘工具”。
- 选中你的 USB 硬盘,点击“抹掉”。
- 格式选择:MS-DOS (FAT) 或 ExFAT。
- 为什么不用 NTFS? 因为 macOS 对 NTFS 的写入支持是只读的,你需要装第三方驱动,麻烦。exFAT 是 Mac 和 Windows 和 Tails 都能读写的通用格式。
- 注意:exFAT 在大文件(超过 4GB)上表现良好,适合存视频、大型密钥库。
- 复制文件:打开 Finder,找到你的“文稿”、“桌面”、“下载”文件夹,把你的关键数据复制到 USB 硬盘里。
- 重点检查:如果你用过 SSH,记得把
~/.ssh文件夹里的id_rsa或id_ed25519密钥也拷出来。如果你用过 GPG,把~/.gnupg文件夹也拷出来。这些是你在 Tails 里维持身份的关键。
- 重点检查:如果你用过 SSH,记得把
- 安全弹出:在 Finder 里,把 USB 硬盘图标拖到废纸篓(此时废纸篓会变成“弹出”),等待弹出后再拔掉。
方式 B:通过 Apple AirDrop(仅限 Mac 到 Mac)
如果你现在要用 Tails 的电脑也是一台 Mac,那 AirDrop 是最快的。
- 在旧 Mac 上,右键点击要分享的文件或文件夹 -> “共享” -> “隔空投送”。
- 选择你的新 Mac。
- 在新 Mac 上,文件会保存到“下载”文件夹。
- 然后,你还是得把这些文件再复制到 USB 硬盘里,因为 Tails 不能直接从另一台 Mac 的硬盘读取。
方式 C:通过 Samba 网络共享
和 Windows 类似,但 Mac 的 Samba 设置更简单。
- 在 Mac 上开启共享:
- 打开“系统偏好设置” -> “共享”。
- 勾选“文件共享”。
- 点击“选项”,确保你的用户账号被勾选,并设置好密码。
- 在“共享文件夹”列表中,添加你想共享的文件夹(比如“文稿”)。
- 在 Tails 上挂载:
- 启动 Tails,解锁持久化。
- 打开“文件”应用,在“其他位置”输入:
smb://你的MacIP地址/文稿 - 输入 Mac 的用户名和密码。
- 复制文件到持久化存储。
第三步:从 Linux 系统导出数据
Linux 用户最简单,因为 Tails 基于 Debian,对 Linux 文件系统支持最好。
方式 A:拷贝到外部 USB 硬盘
- 插入 USB 硬盘:插入你的 Linux 电脑。
- 检查文件系统:
- 打开终端,输入
lsblk或df -h,看看你的 USB 硬盘是什么格式。 - 如果是 ext4、ext3、ext2,Tails 可以直接读写。
- 如果是 NTFS,Tails 也可以读写。
- 如果是其他格式,建议格式化一下,或者用
mkfs.ext4格式化(在 Linux 上很容易)。
- 打开终端,输入
- 挂载硬盘:
- 通常 Linux 会自动挂载。如果没有,手动挂载:
sudo mkdir /media/usb sudo mount /dev/sdb1 /media/usb # 假设你的硬盘是 /dev/sdb1
- 通常 Linux 会自动挂载。如果没有,手动挂载:
- 复制文件:
- 把你的家目录下的
.ssh、.gnupg、文档、图片等复制过去。cp -r ~/.ssh /media/usb/ cp -r ~/Documents /media/usb/
- 把你的家目录下的
- 卸载硬盘:
- 确保数据写完:
sync - 卸载:
sudo umount /media/usb
- 确保数据写完:
方式 B:通过 SSH 传输
如果你的 Linux 电脑开了 SSH 服务,你可以直接用 Tails 的终端传文件。
- 在 Linux 电脑上确保 SSH 开启:
sudo systemctl enable ssh sudo systemctl start ssh - 在 Tails 上获取 Linux 电脑的 IP 地址:
- 在 Linux 电脑上输入
hostname -I
- 在 Linux 电脑上输入
- 在 Tails 终端里传输:
- 启动 Tails,解锁持久化。
- 打开终端(Applications -> System -> Terminal)。
- 输入:
scp -r user@linux_ip:~/.ssh /home/amnesia/Persistent/ scp -r user@linux_ip:~/Documents /home/amnesia/Persistent/ - 解释:
/home/amnesia/Persistent/是 Tails 持久化存储的挂载点。amnesia是 Tails 的默认用户。Persistent文件夹只有在解锁持久化后才会出现在文件管理器里,但在终端里,你直接用这个路径就行。 - 输入 Linux 电脑的密码,文件就开始传输了。
第四步:在 Tails 中导入数据
现在,你已经把数据放到了外部 USB 硬盘里,或者通过 Samba/SSH 准备好了。接下来,我们要在 Tails 里“导入”这些数据。
场景 1:你有持久化存储,并且已经解锁
这是最理想的情况。
- 启动 Tails:从你的 Tails USB 启动电脑。
- 解锁持久化:
- 在启动界面,你会看到“Unlock Persistent Storage”选项。
- 输入你之前设置的持久化密码。
- 如果密码正确,Tails 会挂载持久化存储,并在“文件”应用里显示一个名为“Persistent”的文件夹。
- 插入你的数据源:
- 如果是外部 USB 硬盘:插入电脑。Tails 通常会自动挂载它,并在“文件”应用的左侧栏显示出来(比如“Data”或“USB Stick”)。
- 如果是 Samba 共享:按照上面的方法,在“其他位置”输入地址,挂载共享文件夹。
- 复制文件:
- 打开“文件”应用。
- 左侧找到你的数据源(比如“Data”)。
- 右侧找到“Persistent”文件夹。
- 把数据源里的文件,全部复制粘贴到“Persistent”文件夹里。
- 建议结构:你可以在 Persistent 文件夹里创建子文件夹,比如
Keys(放 SSH/GPG 密钥)、Documents(放文档)、Photos(放照片),这样以后找起来方便。
- 等待复制完成:如果文件很多,耐心等一下。
- 安全移除:在“文件”应用里,右键点击外部 USB 硬盘,选择“弹出”。
场景 2:你没有持久化存储
这有点棘手。Tails 的设计理念就是“每次重启都干净”,所以没有持久化,你复制进去的文件,重启后就没了。
但如果你只是想临时使用一下文件(比如签署一个文档,然后重启),你可以这样做:
- 插入外部 USB 硬盘:Tails 会自动挂载。
- 复制文件到临时位置:
- 打开终端,创建一个临时目录:
mkdir /tmp/mydata cp -r /media/amnesia/Data/你的文件夹/* /tmp/mydata/ - 或者直接在“文件”应用里,把文件复制到“桌面”或“文档”文件夹。这些目录在 Tails 里是非持久化的,但重启前你可以用。
- 打开终端,创建一个临时目录:
- 使用文件:打开对应的应用(比如 GIMP 打开图片,Thunderbird 打开邮件),加载这些临时文件。
- 注意:重启后,这些文件全部消失。如果你需要长期保存,必须设置持久化存储。
场景 3:你需要导入 SSH/GPG 密钥
这是很多人迁移数据的核心需求。
- 确保你已经把
.ssh和.gnupg文件夹从旧电脑拷到了外部 USB 硬盘里。 - 在 Tails 中,插入 USB 硬盘,解锁持久化。
- 复制密钥文件夹到持久化存储:
- 打开终端,输入:
cp -r /media/amnesia/Data/.ssh /home/amnesia/Persistent/ cp -r /media/amnesia/Data/.gnupg /home/amnesia/Persistent/ - 注意:
/media/amnesia/Data/是你的 USB 硬盘的挂载点,可能因设备而异,可以用ls /media/amnesia/查看。
- 打开终端,输入:
- 设置权限(非常重要!):
- SSH 密钥和 GPG 密钥的权限必须严格,否则它们无法使用。
chmod 700 /home/amnesia/Persistent/.ssh chmod 600 /home/amnesia/Persistent/.ssh/* chmod 700 /home/amnesia/Persistent/.gnupg chmod 600 /home/amnesia/Persistent/.gnupg/*
- SSH 密钥和 GPG 密钥的权限必须严格,否则它们无法使用。
- 验证:
- 打开终端,输入
ssh -T git@github.com(如果你迁移了 GitHub 密钥),看是否成功。 - 输入
gpg --list-secret-keys,看密钥是否可见。
- 打开终端,输入
第五步:从 Tails 导出数据
现在,你已经在 Tails 里用了一段时间,持久化存储里存了一些新文件,或者你决定把之前导入的旧数据带回来。
场景 1:导出到外部 USB 硬盘
这是最常用的方法。
- 解锁持久化:启动 Tails,解锁持久化。
- 插入空的 USB 硬盘:确保这个硬盘有足够的空间。
- 复制文件:
- 打开“文件”应用。
- 左侧找到“Persistent”文件夹。
- 右侧找到你的外部 USB 硬盘(比如“Data”)。
- 把你想导出的文件或文件夹,复制粘贴到“Data”里。
- 等待完成并弹出:复制完成后,右键点击“Data”,选择“弹出”,然后再拔掉 USB 硬盘。
- 插回你的旧电脑:现在,你的数据就在 USB 硬盘里了,可以插回 Windows、Mac 或 Linux 电脑使用。
场景 2:通过 Samba 导出到局域网内其他电脑
如果你想把数据直接传到家里另一台电脑上,不用来回插拔 USB。
- 在目标电脑上开启共享:比如,在你的 Windows 电脑上,共享一个“Tails_Data”文件夹。
- 在 Tails 上挂载共享:
- 启动 Tails,解锁持久化。
- 打开“文件”应用,“其他位置”输入
smb://目标电脑IP/Tails_Data。
- 复制文件:
- 从“Persistent”文件夹里,把文件复制到 Samba 共享文件夹里。
- 在目标电脑上查看:现在,你的数据已经在那台电脑的“Tails_Data”文件夹里了。
场景 3:通过 SSH 导出
如果你有一台常用的 Linux 服务器,你可以直接用 SSH 把数据传上去。
- 在 Tails 终端里:
scp -r /home/amnesia/Persistent/Keys user@your_server:/backup/ - 输入服务器密码,文件就开始上传了。
常见问题与解决方案
问题 1:Tails 不识别我的 USB 硬盘
- 原因:文件系统格式不支持,或者硬盘需要格式化。
- 解决:
- 检查硬盘格式。Tails 支持 ext2/3/4, NTFS, exFAT, FAT32。不支持 APFS(Mac 默认)的写入,也不支持 BitLocker
