为什么更新文件时需要重新发布?

为什么更新文件时需要重新发布?

我正在编写一个程序,同时想将其分享给我使用 Ubuntu 的小组成员。他们没有 Ubuntu One 帐户,我所做的就是发布文件,而我的朋友只会获得链接和文件。

但是,不管奇怪与否,每次我上传此文件的新版本(我添加更多代码并保存)时,使用的链接似乎都“过时了”,我需要再次发布相同的文件,并且每次修改相同的文件时都需要获取新的链接。

难道不能保存文件的新版本并且相同的链接仅“指向”较新的版本吗?

答案1

Chipaca 的(Ubuntu One 开发者)回答类似问题

但是,如果您使用编辑器编辑它,重命名文件,创建新文件,复制内容然后删除原始文件(大多数编辑器都这样做),并且 syncdaemon 正在运行,它将看到重命名和删除,并且您的公共 URL 将首先引用重命名的文件,然后消失。

这是我们处理公共文件的方式产生的一个令人遗憾的副作用,我们需要进行改变,但现在的情况就是这样。

基本上,当你用大多数编辑器保存文件时,你实际上是用修改后的版本替换原始文件。你可以自己使用stat命令:

hello@world:~$ stat -c %i hello.txt
4971

该命令stat -c %i返回索引节点文件的 inode 编号。我在 gedit 中
编辑后再次运行相同的命令 会返回不同的 inode 编号:hello.txt

hello@world:~$ stat -c %i hello.txt
3794

如果我只是将一行文本附加到文件末尾,则>>文件只会被就地修改,而不会被覆盖:

hello@world:~$ echo "The End." >> hello.txt
hello@world:~$ stat -c %i hello.txt
3794

我找到了一种略显尴尬的方法来解决 Ubuntu One 中的这个限制:

  1. 创建已发布文件的副本:

     cp hello.txt hello-copy.txt
    
  2. 在副本上而不是已发布的文件上完成所有工作:

     gedit hello-copy.txt
    
  3. 当你想要更新已发布的文件时,运行以下命令:

     cat hello-copy.txt > hello.txt
    

相关内容