Newsgroup: it.comp.os.linux.iniziare
Titolo: Copia dei file in Linux

Recentemente ho installato sul mio portatile "muletto", in dual boot, 
Ubuntu Mate, ultima versione 20.04.02 LTS.
Il sistema operativo mi piace purtroppo riscontro un grave difetto di 
cui recentemente si è parlato in altri post, ed ho visto anche in altri 
forum: la copia di file di grandi dimensioni.
Devo riscontrare che quando si copia file di dimensioni medio-grandi la 
finestra di Caja risulta non veritiera rispetto l'effettiva operazione 
in corso. Anche quando Caja da processo completato, per l'effettiva 
estrazione della pendrive, richiede altro tempo, purtroppo non 
quantificabile o stimabile correttamente. Si rimane "prigionieri" di 
questa operazione così come i clienti che, giustamente, iniziano ad 
avere impazienza.
Quindi se si deve consegnare una pendrive ad un cliente si resta in 
balia del sistema operativo. Con Windows questa problematica non mi è 
capitata potendo dare una tempistica.
Dovendo spesso effettuare queste operazioni, volevo utilizzare Linux per 
proteggermi da eventuali virus presenti sulle pendrive dei clienti, la 
situazione mi spinge a utilizzare il vecchio metodo di scansione con 
antivirus e poi copia. Certo visto che linux inizia a piacermi ed a 
adottarlo per altri scopi, noto in questo difetto, un ostacolo 
importante. Ciao.

Il 24/04/21 07:08, Hurricane ha scritto:

   Questo è dovuto al meccanismo di scrittura asincrona utilizzato di 
default.  Il SO dice al comando di copia che l'operazione è fatta quando 
in realtà i dati da copiare sono stati copiati in un buffer di I/O dal 
quale sono scritti sul dispositivo fisico man mano che questo è 
disponibile e che il SO ha completato certe sue analisi di ottimizazione 
della scrittura.
   Per evitare che questo succeda si deve montare il dispositivo con 
l'opzione sync (mount -o sync), che fa in modo che l'applicativo di 
copia riceva la segnalazione "copia completata" solo quando i dati sono 
stati effettivamente tutti consegnati al dispositivo.
 
 
   Ciao,
 
 
Alessandro
 


hai due possibilità:
- montare il dispositivo con l'opzione sync (mount -o sync)
- fare un tuning system-wide della dirty virtual memory
 
sudo sysctl -a | grep vm.dirty
 
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 10
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 3000
vm.dirty_ratio = 20
vm.dirty_writeback_centisecs = 500
vm.dirtytime_expire_seconds = 43200
 
nel mio caso vm.dirty_ratio indica che il sistema usa il 20% della memoria disponibile per la cache. questo vuol dire che se hai abbastanza ram la cache può essere grossa. 
per ridurre i tempi di attesa scrittura fisica puoi agire su vm.dirty_expire_centisecs e vm.dirty_writeback_centisecs. occhio però che questi valori impattano sulle performance e lo stress dei dischi, considerato che sono lì apposta per ridurre al minimo i cicli di scrittura/lettura. 
considera poi che se il dispositivo è lento resta lento, il cliente aspetta largocirca lo stesso tempo in base alla quantità di dati copiati. 


Come si fa a montarlo sync? C'è un modo per dire di default che tutti i 
dispositivi vengano caricati con l'opzione sync? Bisogna farlo 
manualmente? A me interessa che Caja visualizzi l'effettiva velocità a 
cui sta andando, la cache pur utile, falsa la visione dei tempi. 
L'ideale sarebbe che Caja visualizzasse anche il tempo residuo o la 
quantità di dati presenti nel buffer, in modo decrescente, per avere 
idea dei tempi, montando il dispositivo senza opzione sync. Non c'è 
nessuna opzione in merito?
 


Come si fa a montarlo sync?  Bisogna farlo manualmente? C'è un modo per 
dire di default che tutti i dispositivi vengano caricati con l'opzione 
sync? A me interessa che Caja visualizzi l'effettiva velocità a cui sta 
andando, la cache pur utile, falsa la visione dei tempi. L'ideale 
sarebbe che Caja visualizzasse anche il tempo residuo o la quantità di 
dati presenti nel buffer, in modo decrescente, per avere idea dei tempi, 
montando il dispositivo senza opzione sync. Non c'è nessuna opzione in 
merito in caja?
 
 > - fare un tuning system-wide della dirty virtual memory
 >
 > sudo sysctl -a | grep vm.dirty
 >
 > vm.dirty_background_bytes = 0
 > vm.dirty_background_ratio = 10
 > vm.dirty_bytes = 0
 > vm.dirty_expire_centisecs = 3000
 > vm.dirty_ratio = 20
 > vm.dirty_writeback_centisecs = 500
 > vm.dirtytime_expire_seconds = 43200
 >
 > nel mio caso vm.dirty_ratio indica che il sistema usa il 20% della 
memoria disponibile per la cache. questo vuol dire che se hai abbastanza 
ram la cache può essere grossa.
 > per ridurre i tempi di attesa scrittura fisica puoi agire su 
vm.dirty_expire_centisecs e vm.dirty_writeback_centisecs. occhio però 
che questi valori impattano sulle performance e lo stress dei dischi, 
considerato che sono lì apposta per ridurre al minimo i cicli di 
scrittura/lettura.
 > considera poi che se il dispositivo è lento resta lento, il cliente 
aspetta largocirca lo stesso tempo in base alla quantità di dati copiati.
 >
 
Non mi interessa mettere sotto-stress i dispositivi, a me interessa dare 
una tempistica su quanto tempo manca alla fine della copia, + o - certo.
Se la cosa fosse automatica ed integrata sarebbe l'ideale, come su 
Win10. Inoltre andiamo tutti di fretta ed i clienti ancora di più, se 
portano un dispositivo lento fatti loro, di certo "tenerli appesi" e non 
sapere cosa rispondere alla tipica domanda "ma ci vuole ancora molto?" 
spesso non è piacevole, vedendoli "sulle spine" attaccati disperatamente 
al cellulare.

 al cellulare.
 
Se questo e` il motivo, la soluzione e`
alquanto semplice, si risponde che
mancano ancora 10 minuti (o 15, o 20).
Si fanno due conti a spanne e via.
 
Se il tempo rimasto fosse "mission
critical", allora sarebbe diverso.
 
Anche perche`, anche Windows mente
sfacciatamente al riguardo.
Infatti stima il tempo rimasto in
base a quanto e` passato, ma questo
non e` detto dia un risultato corretto.
 
bye,
 
-- 
 
piergiorgio


Quindi come si imposta sync?
 

 Quindi come si imposta sync?
 
Il sync non ti dice quanto tempo manca.
Semplicemente ti fa aspettare prima,
invece che dopo.
 
Se il tuo problema e` quello di dire
al cliente che mancano tot minuti,
non e` quella la soluzione.
 
In ogni caso:
 
mount /dev/sdX /mnt/mountpoint -osync
 
man mount
 
Dove anche dice:
 
"In the case of media with a limited number
of write cycles (e.g. some flash drives),
sync may cause life-cycle shortening."
 
bye,
 
-- 
 
piergiorgio

 una tempistica su quanto tempo manca alla fine della copia, + o - certo. 
 
va beh ma quello più o meno ce l'hai. quando smonti il drive viene fatto il flush della cache, da lì passeranno dei secondi, toh mezzo minuto, prima di darti il consenso a togliere la chiavetta.
quelli che si lamentavano su altri thread era perché volevano togliere la chiavetta senza smontarla perché su windows pare si possa fare mentre su linux no. certo se non la smonti non sai quanto tempo dopo è sicuro rimuoverla (possono passare anche molti minuti), ma se la smonti... 

 
Okay, grazie.


Dipenderà dalla lentezza di alcune pendrive ma l'attesa media è 
decisamente più lunga dei 30 secondi, smontandola. Cosa costi poi, a 
livello di sistema operativo implementare una roba del genere non lo so, 
secondo me di certo sarebbe utile dare questa indicazione, almeno di 
"massima".

On 25/04/21 17:58, rootkit wrote:

Ho provato a modificare il parametro ratio portandolo a 5 ed ho fatto 
una prova, sudo sysctl -w vm.dirty_ratio=5 la situazione migliora. Però 
la spia del disco resta sempre accesa, penso si perda in prestazioni 
complessive del sistema (ipotizzo).Si va comunque, intorno ai 2 minuti 
prima di comunicare che è possibile staccare la penna.
Comunque in realtà. almeno con Mate, il sistema sa che la penna è 
occupata e quando dovrebbe finire. Nel frattempo se si cerca di 
espellerla il sistema dice che c'è già un'operazione in corso.
Secondo me si tratta solo di mettere queste informazioni nel box 
visibile all'utente che dice che l'operazione è in corso (cache occupata 
in quel momento), quando lo vuoi togliere di mezzo la finestra premi il 
tasto ok (come adesso). Quindi si tratta di aggiungre una barra in 
percentuale o con il valore assoluto, ripeto se il sistema ha contezza 
di questo valore residuo. Che ne pensate?
 
Come è attualmente:
 
https://ibb.co/Fkp2cM7
 
https://ibb.co/MpPJr6T
 
 
come mi piacerebbe (e penso sia utile).
 
https://ibb.co/L9PDcRJ
 

 "massima".
 
Cosa vuol dire "di massima"?
 
Non e` possibile sapere quanto tempo
ci mettera`, quello che puo` essere
visualizzato e` una stima che, come
per Windows, molto facilmente e` errata
non di poco.
 
Se si copia, per esempio, con "rsync" e
l'opzione "-P" (mi pare) viene riportato
quanto veloce il trasferimento stia
andando in quel momento.
Non, pero`, quanto tempo manca.
 
Ci sara` un motivo?
 
bye,
 
-- 
 
piergiorgio

 Ci sara` un motivo?
 
E' un po' come gli indicatori per la benzina nelle auto: ti fermi a
un semaforo lungo e i km previsti crollano.
Ci stanno due modi principali per la stima del tempo a finire:
 
1. mega rimanenti diviso velocita' di download attuale, che e' quella
piu' usata, ma puo' variare da istante a istante anche di moltissimo;
 
2. mega restanti per tempo gia' impiegato diviso mega scaricati, che'
e' piu' stabile ed anche -penso- piu' attendibile, ma che nessuno
-che io sappia- ha mai usato ciao
(io m'ero fatto uno script per la previsione, pero' ad esempio i vari
muli o cose simili te lo mostrano attraverso grafici mega-tempo, ben
diversi dagli indicatori)
 
-- 
Yoda