Linux-还原文件
我已经编写了一个基本的shell脚本,它将指定的文件移动到垃圾箱目录中。脚本如下:Linux-还原文件,linux,bash,shell,Linux,Bash,Shell,我已经编写了一个基本的shell脚本,它将指定的文件移动到垃圾箱目录中。脚本如下: #!/bin/bash #move items to dustbin directory mv "$@" ~/dustbin/ echo "File moved to dustbin" 这对我来说很好,我指定的任何文件都会移动到垃圾箱目录。但是,我想做的是创建一个新脚本,将垃圾箱目录中的文件移回其原始目录。我知道我可以很容易地编写一个脚本,将它移回用户指定的位置,但我更希望有一个脚本将它移回其原始目录 这可能吗
#!/bin/bash
#move items to dustbin directory
mv "$@" ~/dustbin/
echo "File moved to dustbin"
这对我来说很好,我指定的任何文件都会移动到垃圾箱目录。但是,我想做的是创建一个新脚本,将垃圾箱目录中的文件移回其原始目录。我知道我可以很容易地编写一个脚本,将它移回用户指定的位置,但我更希望有一个脚本将它移回其原始目录
这可能吗
我使用的是Mac OS X 10.6.4和Terminal,您必须存储原始文件的来源。可能在单独的文件、数据库或文件属性(元数据)中 创建包含两列的日志文件:
/home/user/.wgetrc
和/home/user/old/.wgetrc
当用户删除一个文件,创建一个同名的新文件,然后再删除该文件时,您会怎么做?你需要版本或时间戳之类的东西 您必须存储原始文件的来源。可能在单独的文件、数据库或文件属性(元数据)中 创建包含两列的日志文件:
/home/user/.wgetrc
和/home/user/old/.wgetrc
当用户删除一个文件,创建一个同名的新文件,然后再删除该文件时,您会怎么做?你需要版本或时间戳之类的东西 您需要将原始位置存储在某个地方,或者存储在数据库中,或者存储在文件的扩展属性中。数据库无疑是实现这一点的最简单方法,不过扩展属性会更健壮。查看~/.Trash/我看到一些文件,但不是所有文件都有扩展属性,因此我不确定Apple是如何做到的。您需要将原始位置存储在某个地方,或者存储在数据库中,或者存储在文件的扩展属性中。数据库无疑是实现这一点的最简单方法,不过扩展属性会更健壮。查看~/.Trash/我看到一些文件,但不是所有文件都有扩展属性,因此我不确定Apple是如何做到的。您需要对文件中的源目录进行编码。我认为最简单的方法是更改垃圾箱目录中的文件名。所以/home/user/music/song.mp3变成~/dustbin/song.mp3 | home\u user\u music
当您将其复制回来时,您的脚本需要处理文件名并构造从|开始的路径。您需要以某种方式对文件中的源目录进行编码。我认为最简单的方法是更改垃圾箱目录中的文件名。所以/home/user/music/song.mp3变成~/dustbin/song.mp3 | home\u user\u music
当您将其复制回来时,您的脚本需要处理文件名并构造从|开始的路径。另一种方法是让文件系统成为您的数据库 从
/some/directory/somewhere/filename
移动的文件将被移动到~/dustbin/some/directory/somewhere/filename
中,您需要执行查找~/dustbin-name“$file”
以根据其基本名称(从用户输入)进行查找。然后您只需从find
的输出中修剪“~/busbin”,就可以使用目的地了。如果find
返回多个文件,您可以列出建议的文件供用户选择。如果希望回滚到早期版本,可以使用~/dustbin/$deletiondate
您可以执行
cron
作业,定期删除旧文件和目录(如果为空)。另一种方法是让文件系统成为您的数据库
从/some/directory/somewhere/filename
移动的文件将被移动到~/dustbin/some/directory/somewhere/filename
中,您需要执行查找~/dustbin-name“$file”
以根据其基本名称(从用户输入)进行查找。然后您只需从find
的输出中修剪“~/busbin”,就可以使用目的地了。如果find
返回多个文件,您可以列出建议的文件供用户选择。如果希望回滚到早期版本,可以使用~/dustbin/$deletiondate
您可以执行
cron
工作,定期删除旧文件和目录(如果是空的)。我认为创建一个类似于其他建议的数据库对bash来说是非常重要的。如果您要这样做,请切换语言。这里的问题是您的文件名中可能已经有
。您可以通过将原始文件名中的|
替换为|
(并在还原时将其反转)来解决这个问题,因为路径中不能有空目录名。我认为创建类似于其他建议的数据库对于bash来说是非常重要的。如果您要这样做,请切换语言。这里的问题是您的文件名中可能已经有
。您可以通过将原始文件名中的|
替换为|
(并在还原时将其反转)来解决这个问题,因为路径中不能有空目录名。我非常喜欢扩展属性的想法:)我非常喜欢扩展属性的想法:)