2010-02-14 20 views
7

(En C/C++/Linux)archivos concatenar sin copiar su contenido

¿Hay una manera de concatenar archivo A y archivo B (o en realidad añadir el contenido de una A a la de B) únicamente mediante la alteración del sistema de archivos sin la sobrecarga de copiar datos? El archivo A puede ser descartado.

Gracias

+0

Entonces, si tiene 2 archivos de 1 byte cada uno, ¿termina con 1 archivo que contiene 2 bytes? Eso será un problema en el almacenamiento orientado a bloques, y la mayoría del almacenamiento no volátil comercial moderno está orientado a bloques, a excepción del flash NOR. Pero cualquier cosa SATA o USB-attached es, al igual que las tarjetas SD. – MSalters

Respuesta

7

Si los archivos eran bloques estructurados, y si el sistema operativo admite archivos de bloques estructurados (como hacen algunos) a continuación (en principio) sí. Pero a medida que pregunta por Linux, supongo que está hablando de un sistema de archivos orientado a bytes, donde un bloque de disco no se puede usar por completo. En este caso, algunas copias son inevitables y en la práctica debe copiar todo el archivo.

2

Puede escribir su propio sistema de archivos (por ejemplo, con FUSE) que proporciona pseudoarchivos para una concatenación económica. Pero supongo que eso sería excesivo (para cualquier caso de uso), ya que debes preocuparte por las referencias y demás.

Cuestiones relacionadas