Existe uma maneira de listar todas as instâncias quando um determinado arquivo foi modificado / editado?

3

Atualmente tenho um arquivo abc.txt . Estou curioso para saber se é possível ver todas as instâncias quando este arquivo foi editado, a partir da data em que foi criado?

P: Como posso tornar possível [se eu quiser] ver o registro posterior de data & hora para quando o conteúdo de um determinado arquivo ( abc.txt ) foi editado, do terminal?

Estou usando o Ubuntu 14.04.1 LTS

    
por 3kstc 27.05.2015 / 02:23

3 respostas

3

Isso não é possível com arquivos nativos no sistema de arquivos. O que você pode estar procurando é um sistema de controle de versão , como git (ou svn , etc.), onde os usuários verificam os arquivos e todas as informações sobre as atividades e alterações são armazenadas na base de dados do respectivo sistema de controle de versão.

    
por 27.05.2015 / 03:38
2

A maioria dos sistemas de arquivos não oferece nenhum meio de fazer isso. Existem algumas formas diferentes de rastrear alterações de arquivos em sistemas Unix / Linux:

  • Sistemas de arquivos estruturados em log, como NILFS , acompanham todas as alterações como instantâneos. Esses snapshots são preservados o maior tempo possível (o que depende das configurações de nilfs_cleanerd e do valor de alterações nos sistemas de arquivos), e os snapshots disponíveis para um determinado arquivo podem ser determinados usando lscp . Isso fornece um histórico (possivelmente parcial) de um arquivo. Os instantâneos podem ser convertidos em pontos de verificação que são preservados.
  • Os sistemas de backup contínuo registram regularmente os arquivos que acompanham. A maioria desses sistemas é comercial; há uma lista em Wikipedia , é claro. O Dropbox e o CrashPlan são dois sistemas Eu sei o que fazer no sentido de um backup contínuo; eles não rastreiam todas as alterações, mas mantêm todo o histórico de um determinado arquivo.
  • Como Janis mencionado, os sistemas de controle de versão permitem que os usuários armazenem o histórico de um arquivo, mas as alterações armazenadas são geralmente voluntário (portanto, o histórico de um arquivo reflete apenas os pontos em que as alterações foram armazenadas, não a atividade de edição real no arquivo). Alguns wrappers VCS podem fornecer automação até certo ponto; etckeeper vem à mente: ele rastreia automaticamente as alterações sempre que uma ferramenta de gerenciamento de pacotes é usada.
por 27.05.2015 / 06:56
1

Isso não é possível depois do fato. Os sistemas de arquivos “normais” não mantêm um registro das versões anteriores de um arquivo. Tudo o que você pode saber é a última vez que o arquivo foi modificado (esse é o tempo de modificação do arquivo, mostrado por ls -l e pela maioria dos gerenciadores de arquivos). Você não pode encontrar versões anteriores ou saber quando elas foram feitas, a menos que o editor tenha deixado um arquivo de backup para trás.

O proprietário do arquivo pode alterar o horário da modificação, por isso não é útil se você tiver preocupações de segurança e não confiar no autor. Os arquivos possuem outro timestamp, o ctime (inode change time), que não pode ser definido manualmente e é atualizado sempre que o arquivo é modificado ou movido ou seus metadados (incluindo a hora da modificação) são modificados. Portanto, o ctime de um arquivo mostra que a versão atual do arquivo foi criada no máximo (assumindo que você confia no administrador do sistema). Você pode ver o ctime com ls -lc .

Se você quiser gravar a atividade em torno de um arquivo, use os mesmos métodos usados para gravar quando um arquivo é acessado : um inotify watch , LoggedFS , regras de auditoria , etc. Todos esses métodos registram apenas o que acontece uma vez eles foram configurados.

Se você quiser acompanhar o estado do arquivo em determinadas datas, faça backups.

Se você quiser salvar automaticamente todas as versões sucessivas de um arquivo, edite-o por meio de um sistema de arquivos CopyFS .

Se você quiser acompanhar as versões sucessivas do arquivo de maneira conveniente, use um sistema de controle de revisão . Este é um mecanismo cooperativo: as versões são gravadas quando a pessoa que está fazendo a modificação decide cometer uma nova versão.

    
por 28.05.2015 / 10:05