Como alterar a data / hora de criação (st_birthtime) de um arquivo no Lion? [duplicado]

10

touch(1)só pode alterar os tempos de modificação e acesso , mas não tem opções para o horário de criação . Isso não funciona, pelo menos não no Lion.

Então, como posso mudar a criação tempo, também conhecido como época natal em fstat(2)? Não há chamada correspondente utimes(2)e não parece haver nenhuma ferramenta de linha de comando para isso.

Eu sei que posso copiar o arquivo para um novo arquivo, que recebe a hora atual como data de nascimento (e exclui o original), mas certamente deve haver uma maneira melhor?

Ingmar Hupp
fonte
11
touch -t yyyymmddhhmm $fileparece alterar a data de criação, mas somente se for anterior à data de criação original.
Lri
Bom ponto, @Lri - isso realmente faz sentido, pois atualiza o mtime e o atime e um arquivo não pôde ser acessado ou modificado antes de ser criado. Mas isso não me permite definir um novo horário de criação.
Ingmar Hupp
Você está se referindo a alterá-lo através da linha de comando, ou apenas em geral, não necessariamente com a CLI?
Daviesgeek
Sinceramente, espero que você não possa mudar isso, pois certamente derrotaria todo o campo do jogo ?! Também suspeito que um dos problemas é que a hora do nascimento / criação não é um recurso padrão do sistema de arquivos; Os hfs o adicionaram em seus atributos estendidos, eu acho - portanto, a menos que os utilitários tenham sido atualizados para reconhecer isso, eles não poderão fazer muito com ele.
Cesium

Respostas:

6

touch -t também altera o horário de criação se o horário de modificação de destino for anterior ao horário de criação original.

SetFile pode definir a hora da criação antes da hora da modificação ou no futuro.

-d date    Sets the creation date, where date is a string of the
           form: "mm/dd/[yy]yy [hh:mm:[:ss] [AM | PM]]" Notes:
           Enclose the string in quotation marks if it contains spa-
           ces. The date must be in the Unix epoch, that is, between
           1/1/1970 and 1/18/2038. If the year is provided as a two-
           digit year, it is assumed to be in the 21st century and
           must be from 00 (2000) through 38 (2038).

Isso definiria o horário da criação para o horário da modificação:

SetFile -d "$(GetFileInfo -m test.txt)" test.txt

SetFile e GetFileInfo fazem parte do pacote de ferramentas de linha de comando, que pode ser baixado nas preferências do Xcode ou em developer.apple.com/downloads .

Lri
fonte
Estritamente falando, "hora do nascimento" ( crtime) e ctime são coisas diferentes (consulte Horários de criação de arquivos no ZFS
G. Cito
É claro que os tempos de acesso e modificação geralmente são os mesmos - mas por razões diferentes. As páginas touche statmanual têm os detalhes. Eu estaria interessado em saber como o OpenZFS for OSX, bem como os sistemas de arquivos "nativos" do OSX, lidam com o crtimecampo ou quais statrelatórios para as crtimevárias versões do OSX.
G. Cito
-1

Tentar:

cat filename > newfile
mv filename ~/.Trash/
mv newfile filename 

Isso deve funcionar.

Sean Freitag
fonte
11
Você ainda precisará excluir o original. Ingmar já havia coberto isso.
21412 Hipopótamo
Opa, deveria ter lido melhor. Mas não, não há uma maneira melhor ...
Sean Freitag