/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
For stor fil
Fra : Sven Esbjerg


Dato : 07-01-01 15:02


Jeg er stødt ind i et ubehageligt problem. Jge har på AMD Debian 2.2
kerne 2.4 box lavet en backup med tar og gzip. Dette har resulteret i
en fil der er for stor til at den kan håndteres af Linux. Jeg fatter
ikke hvordan det kunne lade sig gøre at den blev større end de 2Gb
uden fejl, men det er åbenbart sket. Anyway jeg har nu en fil som kun
kan listes med en ls kommando. Jeg kan se indholdet af den med tar,
men jeg kan ikke flytte eller slette den med mv, rm eller emacs. Jeg
kan heller ikke umiddelbar se størrelsen på den.

Er der nogen der kender en måde hvor jeg kan komme af med den fil
igen?

--
Sven

 
 
Sven Esbjerg (07-01-2001)
Kommentar
Fra : Sven Esbjerg


Dato : 07-01-01 15:26

Sven Esbjerg <esbjerg@egmont-kol.dk> writes:

> Jeg er stødt ind i et ubehageligt problem. Jge har på AMD Debian 2.2
> kerne 2.4 box lavet en backup med tar og gzip. Dette har resulteret i
> en fil der er for stor til at den kan håndteres af Linux. Jeg fatter
> ikke hvordan det kunne lade sig gøre at den blev større end de 2Gb
> uden fejl, men det er åbenbart sket. Anyway jeg har nu en fil som kun
> kan listes med en ls kommando. Jeg kan se indholdet af den med tar,
> men jeg kan ikke flytte eller slette den med mv, rm eller emacs. Jeg
> kan heller ikke umiddelbar se størrelsen på den.
>
> Er der nogen der kender en måde hvor jeg kan komme af med den fil
> igen?

problem løst med: dd if=/dev/null of=for_stor_fil.tgz

--
Sven

N/A (07-01-2001)
Kommentar
Fra : N/A


Dato : 07-01-01 16:47



frank damgaard (07-01-2001)
Kommentar
Fra : frank damgaard


Dato : 07-01-01 16:47

Anders Bo Rasmussen <fuzz01@spamfilter.dk> wrote:

.....
> Er der nogen der kan komme med en forklaring på at dette kan lade sig gøre?

2GB = 32 bit heltal til at adressere hver byte.
Eksisterende (gamle) sysmtemkald til filhåndtering kan kun
klare 32bit index.
Der findes i Linux nyere (udvidede) kald til vistnok 64bit.
Andre programmer er måske oversat/lavet til store filer og det
vil så virke.

--
Frank Damgaard


Sven Esbjerg (07-01-2001)
Kommentar
Fra : Sven Esbjerg


Dato : 07-01-01 17:45

frank damgaard <frank.damgaard@no.spam> writes:

> Anders Bo Rasmussen <fuzz01@spamfilter.dk> wrote:
>
> ....
> > Er der nogen der kan komme med en forklaring på at dette kan lade sig gøre?
>
> 2GB = 32 bit heltal til at adressere hver byte.
> Eksisterende (gamle) sysmtemkald til filhåndtering kan kun
> klare 32bit index.
> Der findes i Linux nyere (udvidede) kald til vistnok 64bit.
> Andre programmer er måske oversat/lavet til store filer og det
> vil så virke.

Kerne 2.4 kan håndtere >2GB filer. Da jeg bruger denne vil kernen i
hvert fald ikke brokke sig. Jeg ville have troet at gzip ville brokke
sig eftersom den ikke kunne udpakke filen igen. Jeg vil dog gætte på
at problemet i virkeligheden ligger i C-bibliotekerne som alle
programmerne bruge. Jeg fik i hvert fald nogen fejl der kunne tyde på
dette efter at have prøvet lidt med midnight-commander.

Hvis der sidder en garvet C og Debian 2.2 bruger kunne det være at
vedkommende kan komme med et uddybende svar.

--
Sven

Peter Makholm (07-01-2001)
Kommentar
Fra : Peter Makholm


Dato : 07-01-01 23:33

Sven Esbjerg <esbjerg@egmont-kol.dk> writes:

> Kerne 2.4 kan håndtere >2GB filer. Da jeg bruger denne vil kernen i
> hvert fald ikke brokke sig. Jeg ville have troet at gzip ville brokke

32bit versionen og 64bit versionen af visse systemkald er ikke
kompatible. Derfor bruges der forskellige systemkald både i kernen og
i libc-laget.

Derfor kan programmer der benytter de gamle systemkald ikke uden
videre anvende filer større end 2GB selvom kernen ikke har noget imod
det.

Formodentligt er det store problem ikke bare at skrive til filer, men
først når man skal stat'e dem eller seek'e i dem. Så skal man nemlig
bruge stat64 og lseek64 istedet for de gamle funktioner.

Der ser ikke ud til at være skrevet manualsider for de nye kald, men
deres definitioner findes i /usr/include/sys/ (Og måske et pænere
sted)


Lasse (10-01-2001)
Kommentar
Fra : Lasse


Dato : 10-01-01 19:14


frank damgaard <frank.damgaard@no.spam> wrote in message
news:g6suiw.mp0@mkb84.ftn...
> Anders Bo Rasmussen <fuzz01@spamfilter.dk> wrote:
>
> ....
> > Er der nogen der kan komme med en forklaring på at dette kan lade
sig gøre?
>
> 2GB = 32 bit heltal til at adressere hver byte.

32 bits kan addressere 4GB forudsat at det er uden fortegn. (Det er vel
de færreste filsystemer som tilader filer med negativ størrelse?)

--
Lasse




seg.dantaet@get2net.~ (10-01-2001)
Kommentar
Fra : seg.dantaet@get2net.~


Dato : 10-01-01 20:57

Lasse wrote:

> > > Er der nogen der kan komme med en forklaring på at dette kan lade
> sig gøre?
> >
> > 2GB = 32 bit heltal til at adressere hver byte.
>
> 32 bits kan addressere 4GB forudsat at det er uden fortegn. (Det er vel
> de færreste filsystemer som tilader filer med negativ størrelse?)
>

lseek (move file pointer) regnes med fortegn, således der kan navigeres
i begge retninger. Filstørrelsen begrænses derfor til 2GB således
pointeren
kan flyttes fra start til slut eller omvendt i en operation.

--
Svend

Søg
Reklame
Statistik
Spørgsmål : 177514
Tips : 31968
Nyheder : 719565
Indlæg : 6408615
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste