Ubuntu系统下能否将PhotoRec恢复文件直接输出至SSH账户?求解决方案
如何将PhotoRec恢复的文件直接传输到SSH远程账户?
当然可行!不过你的命令格式有几处问题,咱们一步步捋清楚,给你两种实用的方案:
方案一:用sshfs挂载远程目录(最省心)
PhotoRec本身是把文件写入本地目录的,那我们可以把远程目录挂载到本地,让PhotoRec误以为是在写本地文件,实则直接传到远程服务器。
- 先安装sshfs工具:
sudo apt install sshfs
- 创建本地挂载点:
mkdir ~/remote_recovery
- 挂载远程服务器的目标目录到本地:
sshfs User@Some_IP_Address:/path_to_folder/ ~/remote_recovery
- 运行PhotoRec,指定恢复目录为刚才的挂载点就行。如果用命令行模式(不用图形界面),可以这么写:
photorec /dev/sdc fileopt,everything,disable,jpg,enable,freespace,search,dest,~/remote_recovery
- 恢复完成后,记得卸载挂载点:
fusermount -u ~/remote_recovery
方案二:用tar管道实时传输(不用挂载目录)
如果不想挂载远程目录,咱们可以把恢复的文件先临时放到RAM盘(完全不占本地磁盘),再打包通过管道直接传到远程。
- 创建一个RAM盘(这里设1G大小,你可以根据预估恢复文件大小调整):
mkdir /tmp/ramdisk && sudo mount -t tmpfs -o size=1G tmpfs /tmp/ramdisk
- 运行PhotoRec把文件恢复到RAM盘:
photorec /dev/sdc fileopt,everything,disable,jpg,enable,freespace,search,dest,/tmp/ramdisk
- 打包并通过管道传输到远程服务器:
cd /tmp/ramdisk && tar -cf - . | ssh User@Some_IP_Address "tar -xf - -C /path_to_folder/"
- 清理临时RAM盘:
sudo umount /tmp/ramdisk && rmdir /tmp/ramdisk
说说你原来命令的问题
你的命令有两处关键错误:
- PhotoRec不会把恢复的文件输出到标准输出(stdout),所以直接用
photorec | ssh是行不通的,它只会往指定目录写文件 - SSH的远程命令格式写错了,你写的
/d /path_to_folder/ /cmd不是合法的远程命令语法
注意事项
- 确保远程服务器的目标目录有足够存储空间
- 尽量在稳定的网络环境下操作,避免传输中断导致文件损坏
- 如果用RAM盘,一定要根据预估的恢复文件总大小调整
size参数,避免空间不足
内容的提问来源于stack exchange,提问作者steve
相关产品推荐
相关产品推荐

