Cuando una PC edita un archivo, ¿elimina el archivo original?


55

Si code.txt(o cualquier archivo) se edita y guarda, tengo dos ideas de cómo una PC manejaría el proceso:

  1. La PC se elimina por code.txtcompleto y crea una nueva code.txt(versión editada) desde cero.

  2. La PC edita parte del hexadecimal de code.txt. Entonces no ocurre ninguna eliminación.

¿Qué idea representa cómo funcionan las computadoras?


¡Saludos! A partir de la excelente respuesta proporcionada por el usuario Grawity, aquí hay algunas preguntas aclaratorias:

18
@HaakonDahl, ¿qué preguntas aclaratorias? No has publicado nada.
El gran pato

Dangit Tengo que esperar hasta que vuelva a mi PC. Pero lo esencial es qué nivel: hardware, sistema de archivos, sistema operativo o aplicación. ¿Y qué aplicación?

¿Por qué te importa? Incluso los programas que crean un archivo "nuevo" probablemente cambiarán el tiempo de creación para que coincida con el original. La única diferencia visible sería el número de inodo (o concepto equivalente) que puede ser importante (por ejemplo, si tiene enlaces duros alrededor, se "desincronizarán").
Bakuriu

1
Votar para cerrar esta pregunta como demasiado amplio. Todo depende del sistema operativo, el software y las capacidades del sistema de archivos subyacente.
JakeGould

Respuestas:


121

Podría ser cualquiera: depende del editor de texto que se utilizó.

El concepto de un "archivo de texto" no está integrado en las computadoras: cada sistema operativo puede administrar los archivos de manera diferente, y cada editor de texto puede usar esos archivos de manera diferente.

En la práctica, encontrará editores de texto que tienen ambos mecanismos. Prácticamente todos los sistemas operativos permiten la sobrescritura directa del contenido de un archivo existente, por lo que los editores simples como el Bloc de notas generalmente solo le piden al sistema operativo que escriba directamente en el archivo original, ya que es más fácil de implementar, pero es arriesgado si pierde potencia a mitad de la escritura. Entonces, por razones de fiabilidad, muchos editores guardan deliberadamente los datos actualizados en un nuevo archivo y eliminan el original.

(Creo que las actualizaciones en el lugar son más comunes entre los editores hexadecimales, donde la mayoría de las ediciones no insertan / eliminan bytes sino que solo cambian las ubicaciones existentes, por lo que no se necesita un archivo de reescritura completo).

Incluso hay un tercer modo de operación: el editor primero puede hacer una copia de seguridad del archivo anterior y luego escribir directamente nuevos datos en el archivo.


Es también depende del sistema de ficheros que guarda el archivo. Con la mayoría de los sistemas de archivos tradicionales, si un programa solicita escribir en un archivo existente, el sistema de archivos simplemente sobrescribirá los datos antiguos en el lugar.

Sin embargo, algunos sistemas de ficheros hacen el trabajo en el modo de "copia en escritura", donde los nuevos datos siempre se escriben en una ubicación diferente, si el programa lo quiere o no. Nuevamente, esto tiene la posible ventaja de una mayor confiabilidad porque un cambio interrumpido puede revertirse por completo.

En algunos sistemas de archivos (como Btrfs o ext4) esta es una característica opcional; en otros (p. ej., sistemas de archivos con estructura de registro) es parte del diseño central.


30
No es solo a nivel de sistema de archivos. La memoria flash, por ejemplo, tiene que borrar un bloque antes de poder escribir en él. Entonces, en la práctica, a menudo escribirá en archivos simplemente escribiendo el nuevo cambio en un nuevo bloque e invalidándolo en el bloque anterior. Al tener este tipo de cosas manejadas automáticamente por el propio dispositivo, el sistema operativo puede usar un sistema de archivos de disco duro normal.
Trly

77
@trlkly: todos los dispositivos de memoria flash modernos se dividen en regiones de borrado que son órdenes de magnitud más grandes que un sector de disco y no pueden reciclar ninguna parte de dicha región sin borrarla por completo. En consecuencia, si una región contiene 32 sectores obsoletos de datos y 224 sectores de datos útiles, tendrá que copiar los 224 sectores de datos útiles en otro lugar antes de que pueda liberar el espacio de cualquiera de los sectores obsoletos. Los sistemas operativos modernos utilizan un comando "recortar" para indicar sectores de disco cuyo contenido puede abandonarse si el bloque en el que se encuentran se recicla.
supercat

Algunos editores eligen en tiempo de ejecución qué comportamiento usar (p. Ej., Dependiendo de si un archivo tiene una sola entrada de directorio o varios).
Toby Speight

2
Muchos editores simplemente leerán el archivo en la memoria y harán todos los cambios allí. (Quizás guardar automáticamente de forma periódica una copia del trabajo en curso en un archivo diferente). El archivo original no cambia en absoluto hasta que guarde los cambios, por ejemplo, con el comando vi: w
jamesqf

44
@jamesqf: Bueno, la pregunta era qué sucede cuando un archivo se "edita y guarda " ...
Grawity

6

Como está hablando de "guardar el archivo", el archivo no se editará in situ en el disco.

Con un archivo en un sistema de archivos habitual, hay dos cosas a tener en cuenta. Existe la entrada del directorio, y luego están los datos del archivo real en algún lugar del disco.

Cuando edita un archivo en un editor normal, cargará los datos del archivo en la RAM y cualquier edición se realizará en esa copia de los datos. Luego, cuando guarda el archivo, existen básicamente dos opciones:

Opción 1: se cambia el nombre del archivo original , por lo que tanto la entrada del directorio original como los datos originales permanecerán en el disco. El cambio de nombre podría, por ejemplo, cambiar el sufijo del archivo a .bak( .bakgeneralmente, eliminar cualquier archivo anterior ). Luego se crea un nuevo archivo y los datos de la memoria se escriben allí.

Opción 2: la entrada del directorio original se modifica para que el archivo se trunca a 0 de longitud. El área del disco utilizada para los datos del archivo se marcará como no utilizada, pero el contenido del archivo antiguo permanecerá en el disco hasta que se sobrescriba. Luego se escriben nuevos datos. En este caso, la entrada del directorio permanece, solo cambian los datos a los que apunta.

Hay algunas variaciones posibles, una común, los datos editados se almacenan primero en un archivo temporal, por lo que si su computadora falla en este punto, es probable que el archivo original no se dañe. Luego, el archivo original se elimina y el nuevo archivo se renombra con el nombre correcto. O bien, el archivo original podría eliminarse antes de escribir el nuevo.

Entonces su teoría 1 está cerca de lo que hacen la mayoría de los editores.


Luego hay casos especiales. El más obvio es un editor de disco, que permite leer y sobrescribir bytes directamente en el disco. Otro podría ser un archivo de base de datos, donde los registros pueden tener un tamaño fijo, por lo que es fácil sobrescribir un registro. Pero los datos no se pueden agregar en el medio de un archivo y, por lo tanto, editar archivos de texto o cualquier otro archivo donde la longitud de los datos en el medio del archivo cambie comúnmente, estos trucos realmente no se pueden usar.

Por lo tanto, su teoría 2 es posible en algunos casos, pero los editores de texto normales y otros no lo hacen.


1
"Como está hablando de" guardar el archivo ", el archivo no se editará en el lugar en el disco". - Creo que cada vez que "abre" un archivo, lo edita y escribe los cambios en el disco, está "guardando el archivo", independientemente de si el archivo está "escrito en su lugar" (sobrescrito) o el archivo antiguo se elimina o cambia de nombre y se crea un nuevo archivo. De cualquier manera, por lo general, en algún momento decide "guardar los cambios" o "descartar los cambios".
Kevin Fegan

@KevinFegan Bueno, puede abrir un archivo en un disco o editor hexadecimal adecuado, editar el contenido y guardar los cambios . O bien, puede abrir un archivo de base de datos (como el archivo de base de datos SQLite), modificar la base de datos y hacer que se confirmen los cambios en el archivo. Por lo tanto, solo abrir un archivo para modificarlo puede significar modificarlo en el lugar, pero "guardar un archivo" generalmente implica la creación de un nuevo archivo, y estas otras alternativas tienen una acción con un nombre diferente para guardar los cambios.
Hyde

4

Históricamente, las unidades eran controladas directamente por el sistema operativo, que a su vez era controlado por la aplicación. En ese contexto, la teoría 2 era la forma principal en que funcionaban las PC. el sistema operativo especificó una ubicación física para colocar datos, y tenía control total sobre este proceso. Como resultado, los primeros sistemas de archivos tenían una tabla de "sector defectuoso", por lo que después de que se perdieron sus datos, la computadora podría decirle que los datos se perdieron y marcar el sector como inutilizable para evitar una mayor pérdida de datos. Los escaneos de disco y la desfragmentación estaban a la orden del día.

Sin embargo, después del cambio de siglo, nos mudamos a LBA, por lo que ahora el sistema operativo simplemente haría referencia al bloque "lógico" en el que quería leer o escribir. El disco duro en sí ahora tenía la inteligencia para barajar los datos detrás del sistema operativo sin que lo notara. Esto significó una mayor confiabilidad, ya que los sectores que no pudieron verificar simplemente podrían trasladarse a una nueva ubicación física sin afectar el conocimiento del sistema operativo de dónde estaban ubicados esos datos.

En el hardware moderno, las unidades de disco "plato" normalmente sobrescriben lo que estaba allí antes con los nuevos datos entrantes, y opcionalmente reasignan el LBA si parece que el sector no puede retener los datos (el sector está dañado o desgastado). Las unidades "Flash" generalmente borran las celdas antiguas y luego escriben datos en las nuevas celdas, un proceso conocido como nivelación de desgaste.

En ambos casos, esto es posible porque siempre hay una capacidad no utilizada más allá del valor informado. Este sobreaprovisionamiento permite que la unidad tenga una vida útil más larga que la tecnología poco confiable de la tecnología del siglo anterior. El modo LBA permite extraer el medio físico del sistema operativo para que la unidad en sí misma pueda tomar las medidas que la unidad considere necesarias para evitar la pérdida de datos.

En el nivel de la aplicación, normalmente abre un archivo en modo "ESCRIBIR", que le dice al sistema operativo que borre el archivo ("elimine" el contenido, pero no el archivo en sí), y luego escriba nuevos datos. Todo esto se almacena en el nivel del sistema operativo y luego se "vacía" en la unidad, lo que hace los cambios solicitados.

Dada esa información, la Teoría 1 es lo que técnicamente sucede en el nivel de programación de la aplicación, al menos por defecto, ya que también hay un modo de "escribir con agregar" para evitar borrar el contenido del archivo. El sistema operativo en sí presentará los cambios para que se realicen más como Theory 2, pero abstraídos a través de LBA. El disco en sí probablemente hará algo que sea una combinación de Teoría 1 y Teoría 2.

Sí. Es complicado y muy dependiente del fabricante de piezas / desarrollador de sistemas operativos / desarrollador de aplicaciones. Sin embargo, toda esta complejidad tiene como objetivo hacer que el almacenamiento de datos sea más confiable al tiempo que mejora el uso de energía / duración de la batería.


3

Depende AFAIK Microsoft Word, al guardar .doc(no .docx) archivos con las opciones de guardado rápido habilitadas, agrega los cambios realizados en el documento desde la última vez que guardó el archivo existente.


1

En términos generales, una computadora asignará la memoria donde reside el archivo original como 'eliminado', pero todo esto realmente significa que ya no aparecerá en su navegador de archivos, y las celdas en la memoria donde se escribió están permitidas para ser sobrescrito en el futuro.

En cuanto a si el nuevo archivo está escrito en el mismo lugar se debe a una serie de factores, principalmente el software que está utilizando y cómo está diseñado para hacer uso de la memoria.


2
Creo que podría estar confundiendo "memoria" con la noción de operaciones de desvinculación del sistema de archivos. Y esto realmente no tiene nada que ver con la pregunta planteada, que pregunta si se sobrescriben archivos concretos o si hay algún tipo de actualización n-way.

Bueno, si el software fue diseñado para hacer eso específicamente, entonces es posible, aunque, por lo que sé, generalmente es así como funcionan tanto el almacenamiento a largo plazo como la RAM.
GigaJoules

Por desgracia, su explicación (por lo que yo puedo descifrar lo que quiere decir) es decididamente no cómo el trabajo "almacenamiento a largo plazo y la memoria RAM". Pero, al final del día, esto tiene poco que ver con la pregunta en cuestión. Lo cual, reitero, es preguntar cómo el software actualiza la información textual a un archivo en un dispositivo informático de propósito general con un sistema de archivos moderno típico. No tenemos que considerar cómo funciona o no funciona algo como la "memoria" para responder a esta pregunta.

1

Esperemos que esto no sea redundante, un poco de información / antecedentes adicionales.

La PC generalmente no tiene mucho control sobre cómo se edita un archivo, es la aplicación la que lo hace.

Algunos ejemplos de cómo algunas aplicaciones podrían manejar la edición:

El Bloc de notas carga todo el documento en la memoria y luego lo guarda sobre su documento original (o uno nuevo que especifique).

Casi todos los demás editores pequeños guardarán un archivo "nuevo" a medida que edita y luego lo copiará sobre su documento original y lo eliminará cuando "guarde".

Los editores de documentos grandes que puede usar para editar un libro tienden a leer / modificar una sección de un documento porque pueden editar documentos más grandes que la memoria. En realidad, estos pueden editar el documento "En el lugar". Podrían volver a escribir una página y dejar el resto solo. Estos a menudo tienen una representación indexada en disco más compleja que un simple archivo .txt para permitir este comportamiento.

Los editores grandes también podrían guardar archivos temporales con "actualizaciones" en su documento original. Cuando realice su guardado final, puede fusionarlos todos y volver a escribir su documento.

La mayoría de los editores se pueden configurar para dejar intacta la versión existente y crear una nueva con sus cambios (conservar las versiones anteriores).

En cuanto a la parte de su pregunta sobre lo que hace una "PC", algunos sistemas operativos recordarán cada versión de un archivo y siempre crearán una nueva. Esto es bastante raro en estos días, pero recuerdo viejas "Mini Computadoras" (lo que ahora llamaríamos mainframes) donde cada archivo tenía una versión al final como "File.text.1" y se agregaba a la versión cada vez que editado Este tipo de comportamiento se aplicaría mejor a algo como una unidad de cinta o CD-ROM donde sobrescribir la versión anterior no era práctico.


1

2 no es imposible, pero es estúpido por varias razones.

Un editor de archivos de texto bien escrito:

  1. Escriba un archivo con un nombre diferente y los nuevos contenidos. Si el original fuera myfile.txt, el nuevo podría sermyfile.txt.new
  2. Siempre que 1. tenga éxito, cambie el nombre del original a un archivo de respaldo, por ejemplo myfile.txt~
  3. Cambie el nombre del nuevo archivo al nombre original myfile.txt
  4. Si todo ha tenido éxito, elimine el archivo de copia de seguridad. Muchos editores lo dejan de todos modos, por lo que el usuario puede recuperarse si pronto se da cuenta de que lo que hizo con el editor no era lo que quería hacer.

Si la computadora falla o se queda sin espacio en el disco durante lo anterior, no hay una situación en la que tanto los archivos antiguos como los nuevos se pierdan o solo se guarden parcialmente.


El comportamiento de truncar en el lugar y reescribir de muchos editores de texto para sistemas operativos que no son de IBM / Microsoft durante el último medio siglo no es "estúpido".
JdeBP

1

Respuesta corta

Depende en gran medida de su editor, software / controladores subyacentes, almacenamiento.


Respuesta paranoica

Puede ser recuperable a menos que lo elimine permanentemente.


Respuesta larga

Falta información en su pregunta (software, hardware, etc.), por lo que, en lugar de responderme, lo ayudaré a responder usted mismo.

Depende de algunos factores:

  1. Editor : si el software del editor reemplaza los bloques del mismo archivo, puede reescribirse. Y esto también puede depender de la configuración del editor y los tipos de archivo. Tenga en cuenta que la palabra mayo se hizo en cursiva. Incluso cuando el editor reescribe el archivo, puede permanecer intacto (lea los siguientes puntos).

  2. Software subyacente / controladores / sistema de archivos : el archivo permanecerá intacto si hay otros software / controladores debajo que protegen el archivo inicial para que no se sobrescriba. Esos tipos de software incluyen sistemas de versiones, discos diferenciales virtuales, algún software de respaldo. Un ejemplo es Git , que mantendrá los bloques de archivos originales y creará un nuevo archivo que contenga los bloques modificados.

  3. Almacenamiento :

    • El almacenamiento en sí mismo puede escribir bloques modificados en un nuevo sector y marcar los bloques antiguos como "libres". Luego, el archivo permanecerá físicamente en el almacenamiento (y es recuperable), a menos que otro archivo lo sobrescriba. El ejemplo es el almacenamiento SSD moderno , que puede hacerlo a nivel de hardware.

    • Hay formas de recuperar datos de los discos magnéticos de un HDD mecánico típico, incluso cuando se sobrescribieron los datos . Y hay empresas especializadas en ello.

Entonces, si desea obtener una respuesta concreta sobre si su archivo se eliminará o no, también debe indicar qué editor, copia de seguridad / software / hardware VCS y almacenamiento utiliza. Si me perdí algún punto, siéntase libre de editar la respuesta.


¿Cómo asegurarse de que el archivo eliminado se elimine realmente del almacenamiento?

Esta es probablemente la siguiente pregunta que se hará usted mismo. Bueno, hay muchas soluciones de software / hardware. Como SuperUser no es para promocionar software / hardware, en lugar de decir nombres, le diré cómo encontrarlos: busque las palabras clave "eliminar el archivo permanentemente". Para obtener coincidencias más exactas, mencione su sistema operativo, tipo de disco duro u otra información que tenga.


1

Un comportamiento que nadie ha mencionado aún es que el comportamiento relevante de algunas versiones de los sistemas operativos MS Windows también está relacionado con el sistema de archivos en uso.

El comportamiento funciona así: cuando cambia el nombre o elimina un archivo, si crea (vuelve a crear) un archivo (nuevo) con el mismo nombre dentro de los 15 segundos posteriores a la eliminación o el cambio del archivo original, la fecha de creación / la marca de tiempo se copia del archivo original. Esencialmente, el nuevo archivo "se convierte" en el archivo antiguo / original.

En este caso, realmente no importa si la aplicación guarda los cambios en el archivo con su método n. ° 1: hacer un nuevo archivo con el mismo nombre, o con su método n. ° 2: editar / actualizar el archivo en su lugar (archivo no eliminado) De cualquier manera, el archivo final se ve (casi) en todos los sentidos, como el archivo original. Lo único es que probablemente ocupará un espacio de unidad física diferente (grupos / sectores) y la entrada de directorio para el archivo probablemente estará en una ubicación diferente.

Como dije, este es un comportamiento de algunas versiones de MS Windows / filesystems. No sé en qué versión de Windows y en qué sistema de archivos comenzó esto, y si sigue siendo el comportamiento de versiones más recientes. Si tuviera que adivinar, diría que se introdujo en Windows NT y Windows XP y sigue siendo el comportamiento de Windows 10, y (todavía una suposición) el comportamiento requiere un sistema de archivos Fat32 o NTFS (y quizás más nuevo).


En realidad, importa, porque NTFS admite enlaces duros y una de las diferencias bien conocidas entre estos métodos es el efecto en los archivos con enlaces múltiples. La tunelización del sistema de archivos ha existido desde al menos Windows NT 5.0.
JdeBP

@JdeBP - Sí, estamos de acuerdo. Es por eso que dije # 1) "Casi" en "el archivo final se ve (casi) en todos los sentidos, como el archivo original", y la entrada de directorio # 2) en una ubicación diferente.
Kevin Fegan

No está de acuerdo si afirma, como lo hace, que no importa.
JdeBP
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.