Se code.txt
(ou qualquer outro arquivo) for editado e salvo, tenho duas idéias de como um PC lidaria com o processo:
O PC exclui
code.txt
completamente e cria uma novacode.txt
(versão editada) do zero.O PC edita parte de hex de
code.txt
. Portanto, nenhuma exclusão acontece.
Qual ideia representa como os computadores funcionam?
Respostas:
Pode ser: depende do editor de texto usado.
O conceito de 'arquivo de texto' não é incorporado aos computadores - cada sistema operacional pode gerenciar arquivos de maneira diferente e cada editor de texto pode usar esses arquivos de maneira diferente.
Na prática, você encontrará editores de texto com ambos os mecanismos. Praticamente todos os sistemas operacionais permitem a substituição direta do conteúdo de um arquivo existente, portanto editores simples como o Bloco de Notas geralmente pedem ao sistema operacional para gravar diretamente no arquivo original, pois é mais fácil de implementar - mas arriscado se você perder energia no meio da gravação. Portanto, por razões de confiabilidade, muitos editores salvam deliberadamente os dados atualizados em um novo arquivo e excluem o original.
(Acho que as atualizações no local são mais comuns entre os editores hexadecimais, onde a maioria das edições não insere / exclui bytes, mas apenas altera os locais existentes, portanto, um arquivo de reescrita completo não é necessário.)
Existe até um terceiro modo de operação - o editor pode primeiro fazer uma cópia de backup do arquivo antigo e depois gravar novos dados diretamente no arquivo.
Ele também depende do sistema de arquivos que mantém o arquivo. Nos sistemas de arquivos mais tradicionais, se um programa solicitar a gravação em um arquivo existente, o sistema de arquivos substituirá apenas os dados antigos no local.
No entanto, alguns sistemas de arquivos fazer o trabalho no modo "copy-on-write", onde todos os dados novos é sempre escrito para um local diferente, se o programa quer ou não. Novamente, isso tem a vantagem possível de aumentar a confiabilidade, pois uma alteração interrompida pode ser totalmente revertida.
Em alguns sistemas de arquivos (como Btrfs ou ext4), esse é um recurso opcional; em outros (por exemplo, sistemas de arquivos estruturados em log), faz parte do design principal.
fonte
Como você está falando sobre "salvar o arquivo", o arquivo não será editado no local no disco.
Com um arquivo em um sistema de arquivos usual, há duas coisas a considerar. Existe a entrada do diretório e os dados reais do arquivo em algum lugar do disco.
Quando você edita um arquivo em um editor normal, ele carrega os dados do arquivo na RAM e qualquer edição acontece nessa cópia dos dados. Então, quando você salva o arquivo, existem basicamente duas opções:
Opção 1: o arquivo original é renomeado , para que a entrada do diretório original e os dados originais permaneçam no disco. A renomeação pode, por exemplo, alterar o sufixo do arquivo para
.bak
(removendo qualquer.bak
arquivo anterior , geralmente). Em seguida, um novo arquivo é criado e os dados da memória são gravados lá.Opção 2: a entrada do diretório original é modificada para que o arquivo seja truncado no tamanho 0. A área no disco usada para os dados do arquivo será marcada como não utilizada, mas o conteúdo antigo do arquivo permanecerá no disco até que sejam substituídos. Em seguida, novos dados são gravados. Nesse caso, a entrada do diretório permanece, apenas os dados para os quais aponta são alterados.
Existem algumas variações possíveis, sendo uma comum, os dados editados são armazenados primeiro em arquivos temporários; portanto, se o computador travar nesse momento, o arquivo original provavelmente não será danificado. Em seguida, o arquivo original é excluído e o novo arquivo renomeado com o nome correto. Ou, o arquivo original pode ser excluído antes de escrever o novo.
Portanto, sua teoria 1 está próxima do que a maioria dos editores faz.
Depois, há casos especiais. O mais óbvio é um editor de disco, que permite ler e substituir bytes diretamente no disco. Outro pode ser um arquivo de banco de dados, em que os registros podem ter tamanho fixo, por isso é fácil substituir apenas um registro. Mas os dados não podem ser anexados no meio de um arquivo e, portanto, editando arquivos de texto ou quaisquer outros arquivos em que o comprimento dos dados no meio do arquivo geralmente muda, esses truques não podem realmente ser usados.
Portanto, sua teoria 2 é possível em alguns casos, mas editores de texto normais e outros não o fazem.
fonte
Historicamente, as unidades eram controladas diretamente pelo sistema operacional, que por sua vez era controlado pelo aplicativo. Nesse contexto, a Teoria 2 foi o principal modo de funcionamento dos PCs. o sistema operacional especificou um local físico para colocar os dados e tinha controle total sobre esse processo. Como resultado, os sistemas de arquivos antigos tinham uma tabela "setor defeituoso"; portanto, após a perda de seus dados, o computador poderia informar que os dados foram perdidos e marcar o setor como inutilizável para evitar mais perda de dados. As verificações de disco e a desfragmentação estavam na ordem do dia.
No entanto, após a virada do século, nos mudamos para o LBA, agora o sistema operacional simplesmente referencia o bloco "lógico" no qual deseja ler ou gravar. O próprio disco rígido agora tinha a inteligência para embaralhar os dados nas costas do sistema operacional sem perceber. Isso significava maior confiabilidade, uma vez que os setores que não conseguiam verificar poderiam simplesmente ser movidos para um novo local físico sem afetar o conhecimento do SO sobre onde esses dados estavam localizados.
No hardware moderno, as unidades de disco "platter" geralmente substituem o que havia antes com os novos dados recebidos e, opcionalmente, remapeiam o LBA se o setor parecer que não pode reter os dados (o setor está danificado ou desgastado). As unidades "Flash" normalmente apagam as células antigas e gravam dados em novas células, um processo conhecido como nivelamento de desgaste.
Nos dois casos, isso é possível porque sempre há capacidade não utilizada além do valor relatado. Esse excesso de provisionamento permite que a unidade tenha uma vida útil mais longa do que a tecnologia pouco confiável da tecnologia do século anterior. O modo LBA permite que o meio físico seja abstraído do sistema operacional para que a própria unidade possa tomar as medidas que julgar necessárias para impedir a perda de dados.
No nível do aplicativo, você normalmente abre um arquivo no modo "WRITE", que instrui o sistema operacional a limpar o arquivo ("excluir" o conteúdo, mas não o próprio arquivo) e, em seguida, gravar novos dados. Tudo isso é armazenado em buffer no nível do sistema operacional e, em seguida, "liberado" para a unidade, que faz as alterações solicitadas.
Dada essa informação, a Teoria 1 é o que tecnicamente acontece no nível de programação de aplicativos, pelo menos por padrão, pois também existe um modo "escrever com anexar" para evitar a limpeza do conteúdo do arquivo. O próprio sistema operacional apresentará as alterações a serem feitas mais como a Teoria 2, mas abstraídas via LBA. O próprio drive provavelmente fará algo que é uma mistura das teorias 1 e 2.
Sim. É complicado e depende muito do fabricante da peça / desenvolvedor do SO / desenvolvedor do aplicativo. No entanto, toda essa complexidade visa tornar o armazenamento de dados mais confiável e, ao mesmo tempo, melhorar o uso de energia / a duração da bateria.
fonte
Depende. AFAIK Microsoft Word, ao salvar arquivos
.doc
(não.docx
) com as opções de gravação rápida ativadas, anexa as alterações feitas no documento desde a última gravação do arquivo existente.fonte
De um modo geral, um computador alocará a memória onde o arquivo original reside como 'excluído', mas tudo isso realmente significa é que ele não aparecerá mais no navegador de arquivos e as células na memória onde foi gravado são permitidas para ser substituído no futuro.
A questão de saber se o novo arquivo está gravado no mesmo local deve-se a vários fatores, principalmente o software que você está usando e como ele foi projetado para usar a memória.
fonte
Espero que isso não seja redundante, um pouco de informações / antecedentes extras.
O PC geralmente não tem muito controle sobre como um arquivo é editado, é o aplicativo que o faz.
Alguns exemplos de como alguns aplicativos podem lidar com a edição:
O bloco de notas carrega o documento inteiro na memória e salva tudo sobre o documento original (ou um novo que você especificar).
Quase todos os outros editores pequenos salvarão um arquivo "novo" à medida que você edita e depois o copia no documento original, excluindo-o quando você "salva".
Os editores de documentos grandes que você pode usar para editar um livro tendem a ler / modificar uma seção de um documento porque podem editar documentos maiores que a memória. Eles podem realmente editar o documento "No local". Eles podem reescrever uma página e deixar o resto em paz. Geralmente, eles têm uma representação indexada em disco mais complexa do que um arquivo .txt simples permitiria esse comportamento.
Os editores grandes também podem salvar apenas arquivos temporários com "atualizações" no documento original. Quando você faz seu salvamento final, ele pode mesclar todos eles e reescrever seu documento.
A maioria dos editores pode ser configurada para deixar a versão existente intocada e criar uma nova com suas alterações (reter versões antigas).
Quanto à parte da sua pergunta sobre o que um "PC" faz, alguns sistemas operacionais lembram todas as versões de um arquivo e sempre criam uma nova. Isso é muito raro hoje em dia, mas lembro-me dos antigos "Mini Computers" (o que agora chamamos de mainframes), onde cada arquivo tinha uma versão no final como "File.text.1" e era adicionada à versão sempre que você editado. Esse tipo de comportamento se aplicaria melhor a algo como uma unidade de fita ou CD-ROM, onde a substituição da versão antiga era completamente impraticável.
fonte
2 não é impossível, mas é estúpido por várias razões.
Um editor de arquivos de texto bem escrito:
myfile.txt
, o novo poderia sermyfile.txt.new
myfile.txt~
myfile.txt
Se o computador travar ou ficar sem espaço no disco durante o procedimento acima, não haverá uma situação em que os arquivos antigos e os novos sejam perdidos ou salvos apenas parcialmente.
fonte
Resposta curta
Depende muito do seu editor, software / drivers subjacentes, armazenamento.
Resposta paranóica
Pode ser recuperável, a menos que você o remova permanentemente.
Resposta longa
Faltam informações na sua pergunta (software, hardware, etc.), então, em vez de responder a mim mesmo, eu o ajudarei a responder sua pergunta.
Depende de alguns fatores:
Editor : se o software do editor substituir os blocos do mesmo arquivo, ele poderá ser reescrito. E isso também pode depender das configurações do editor e dos tipos de arquivo. Observe que a palavra may foi escrita em itálico. Mesmo quando o editor reescreve o arquivo, ele ainda pode permanecer intocado (leia os próximos pontos).
Software / drivers / sistema de arquivos subjacentes : o arquivo permanecerá intocado se houver outro software / drivers abaixo que proteja o arquivo inicial de ser substituído. Esses tipos de software incluem sistemas de versão, discos diferenciais virtuais, alguns softwares de backup. Um exemplo é o Git , que manterá os blocos de arquivos originais e criará um novo arquivo que contém os blocos modificados.
Armazenamento :
O armazenamento em si pode gravar blocos alterados em um novo setor e marcar os blocos antigos como "gratuitos". Em seguida, o arquivo permanecerá fisicamente no armazenamento (e é recuperável), a menos que seja substituído por outro arquivo. Exemplo é o armazenamento SSD moderno , que pode ser feito no nível do hardware.
Existem maneiras de recuperar dados de discos magnéticos de um HDD mecânico típico, mesmo quando os dados foram substituídos . E há empresas especializadas nele.
Portanto, se você deseja obter uma resposta concreta se o seu arquivo será excluído ou não, também deve informar qual editor, software / hardware / armazenamento de backup / VCS você usa. Se eu perdi algum ponto, fique à vontade para editar a resposta.
Como garantir que o arquivo excluído seja realmente excluído do armazenamento?
Esta é provavelmente a próxima pergunta que você se questionará. Bem, existem muitas soluções de software / hardware. Como o SuperUser não é para promover software / hardware, em vez de dizer os nomes, eu direi como encontrá-los: procure as palavras-chave "excluir permanentemente o arquivo". Para correspondências mais exatas, mencione seu sistema operacional, tipo de disco rígido ou outras informações que você possui.
fonte
Um comportamento que ninguém mencionou ainda é um comportamento relevante de algumas versões dos sistemas operacionais MS Windows também está relacionado ao sistema de arquivos em uso.
O comportamento funciona da seguinte maneira: quando você renomeia ou exclui um arquivo, se você criar (recriar) um (novo) arquivo com o mesmo nome dentro de 15 segundos após o arquivo original ter sido excluído (ou renomeado), a data de criação / o carimbo de data / hora é copiado do arquivo original. Essencialmente, o novo arquivo "se torna" o arquivo antigo / original.
Nesse caso, não importa se o aplicativo salva as alterações no arquivo pelo seu método nº 1: criando um novo arquivo com o mesmo nome ou pelo método nº 2: editar / atualizar o arquivo no local (arquivo não excluído). De qualquer forma, o arquivo final se parece (quase) em todos os sentidos, como o arquivo original. A única coisa é que provavelmente ocupará espaço em disco físico diferente (clusters / setores) e a entrada de diretório para o arquivo provavelmente estará em um local diferente.
Como eu disse, esse é um comportamento de algumas versões do MS Windows / sistema de arquivos. Não sei em qual versão do Windows e em qual sistema de arquivos isso foi iniciado e se ainda é o comportamento das versões mais recentes. Se eu tivesse que adivinhar, diria que foi introduzido no Windows NT e Windows XP e ainda é o comportamento do Windows 10 e (ainda é um palpite) o comportamento requer um sistema de arquivos Fat32 ou NTFS (e talvez mais novo).
fonte