8
votes

Fichier rétrécir (tronquer) du début sur Linux

est-il possible sous Linux (et / ou sur un autre fichier de rétrécissement) de début de début? J'aimerais l'utiliser pour une file d'attente persistante (aucune implémentation existante convient à mes besoins). De fin de fichier, je suppose que c'est possible avec tronquage ().


1 commentaires

J'ai commencé à googler «tronquée» après avoir écrit ce post et il semble que ce n'est pas possible.


3 Réponses :


-5
votes

J'ai un fichier tronqué donné comme argument à 64 000 000 octets à l'aide du script Python suivant:

#!/usr/bin/env python

import sys
import os

file = sys.argv[1]
f = os.open(file, os.O_RDWR)
os.ftruncate(f, 64000000)
os.close(f)


1 commentaires

Cela va couper la fin du fichier et l'OP a spécifiquement demandé de couper le début du fichier.



-2
votes

Oui, vous pouvez utiliser couper ou queue pour supprimer des portions d'un fichier.

CUT -B 17- INPUT_FILE

Tail -C +17 INPUT_FILE

Cela émettra le contenu de Input_File à partir de la 17ème octet, en supprimant efficacement les 16 premiers octets du fichier. Notez que l'exemple Cut ajoutera également une nouvelle ligne à la sortie.


2 commentaires

Je m'intéressé à une mise à jour continue du dossier sur place grâce à un appel système. Ce que vous suggérez n'est pas ça.


Dans ce cas, vous pouvez consulter les appels système que les commandes ci-dessus font via strace et ne font que la "viande" de l'opération et non toutes l'analyse de la ligne de commande, etc.



1
votes

Si vous utilisez EXT4, XFS ou un autre système de fichiers moderne, car Linux Kernel 3.15, vous pouvez utiliser: xxx

avec le drapeau Falloc_fl_collapse_range drapeau "/ p>

http://manpages.ubuntu.com /Manpages/disco/fr/man2/fallocat.2.html


0 commentaires