Newsgroup: it.comp.os.linux.iniziare
Titolo: Cartella virtuale (domanda tosta, credo)

Buongiorno a tutti,
avete presente il comando "find", immagino. Ieri mi sono ripassato un po'
tutte le opzioni del comando, in quanto ho necessità di usarlo.
Se uso solo l'opzione "-print", find ritorna un elenco di files, più o meno
come se facessi un "ls", solo che i files riportati si trovano in cartelle
differenti.
Con "find" posso fare praticamente tutto su ogni file, ma mi chiedevo se per
caso esiste qualche sw / utility / driver / macumba che mi consenta di dire
al sistema qualcosa del tipo "crea la directory XYZ corrispondente
all'esecuzione del comando find abcde -print", dopodiché trattare XYZ come
directory, quindi usare i comandi cd, ls, rm, mv ecc. e in generale come
folder a pieno titolo.
Questo mi eviterebbe di dovermi copiare o linkare di qui e di là grandi
quantitativi di files per farli digerire ad utilities varie che sto
utilizzando.
Per chi ha familiarità coi RDBMS, mi serve qualcosa di analogo a CREATE VIEW
(SQL) ma per le directory.
Avere una cartella virtuale mi consentirebbe non solo di usare efficacemente
i comandi Unix, ma anche alcuni applicativi o i vari file manager tipo
Thunair & co.
Il problema è che ho un gruppo esteso di files che devo vedere in due
"spazi" differenti, con organizzazioni differenti; l'idea dei link mi è
venuta, ma non è dinamica: ogni volta che aggiungo un nuovo file, e a volte
ne aggiungo qualche centinaio in un botto solo, devo crearmi tutti i
relativi link. Ok, potrei usare find per un aggiornamento periodico dei
link, ma se ci fosse un sistema più dinamico e meno manuale preferirei.
Spero di non essermi frainteso... :)
C.
PS: ho già googlato invano con "virtual directory", ma ho trovato solo cose
che non c'entrano col mio problema
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 cose che non c'entrano col mio problema
cerchi un file system semantico, mi sa che non esiste ancora.


Infatti, googlando con "virtual folder" ho trovato un po' di roba in più
(
p.es
. pare che Gnome consenta di creare cartelle virtuali, ma sono oggetti
di Gnome, non del SO, quindi inaccessibili dai programmi e dai comandi del
SO), incluso appunto un progetto per un file system semantico, mi pare si
chiami GLqualcheccosaCUBE, che però è già morto da due anni.
Mah, mi sa che andrà a finire che mi sparerò dei gran hardlink con un "find"
carpiato e vado in pace... :)
Mi farebbe comodo un programmino che tenga sott'occhio un gruppo di
directory, magari facendo un poll ogni x millisecondi, e all'apparire di un
nuovo file inneschi un processo che provveda a "massaggiarlo" secondo le mie
regole = linkarlo, ridimensionarlo (se foto) ecc.
In questo modo avrei i link aggiornati in tempo semi-reale, diciamo con una
granularità di un secondo o giù di lì
Esiste codesto programmino che qualcuno sappia? :)
So che Linux stesso utilizza un demone / libreria o altro per aggiornare le
cartelle aperte quando i file in esse contenuti vengono aggiornati da
qualche programma esterno, ma non so (I) come si chiama né se (II) è
accessibile da linea di comando (dentro uno script, per intenderci)
C.


 accessibile da linea di comando (dentro uno script, per intenderci)
per curiosità mia, puoi spiegare più in dettaglio che cosa devi realizzare?
il demone di cui parli si chiama famd, appunto file alteration monitor daemon.
prova a vedere anche kfsmd, sembra più semplice da usare in uno script:
http://www.linux.com/feature/124903

 avere i tuoi files in due posti diversi?
Ho scoperto che la mia idea è meno balzana di quanto pensassi: di file
system semantici ce ne sono diversi, ne ho appena trovato uno che si chiama
"Tagsistant", ma non ho ancora finito di leggere tutto.
Comunque il mio problema è questo: ho un archivio di immagini abbastanza
esteso, organizzato in directory. Le immagini mi arrivano per email, o le
scarico da internet o le downloado da link che mi passano o ce le metto
io... insomma, un po' di tutto.
Una volta scaricate e organizzate le immagini nelle loro
directory/sottodirectory, devo sottoporle a delle trasformazioni grafiche
(resize, watermark), cosa che faccio agevolmente con convert.
Devo tuttavia mantenere i files originali. Per comodità, il file elaborato
potrebbe essere rinominato con un suffisso particolare. In questo modo, file
originali e file elaborati sono vicini.
Spostare i files potrebbe essere fattibile ma dovrei "prependerci" uno o due
nomi di idrectory per essere ragionevolmente sicuro di evitare duplicazioni
(pensate a tutte le CASIO o CANON che producono file con nomi simili e
numerelli progressivi...).
Questo però porterebbe ad avere dei nomi di files abbastanza "legnosi" da
maneggiare, contando che facilmente i nomi dei files contengono anche
caratteri cirillici. Per non parlare del casino che avverrebbe se per caso
decidessi di rinominare la directory dove risiede il file originale.
Quindi, soluzione più semplice: ogni file origine risiede nella stessa
directory con la sua copia elaborata e suffissata/prefissata ad hoc.
Io però devo avere una vista d'insieme su tutti questi files elaborati, per
poterli poi esportare in un sito web: anche qui uso dei tool automatici, ed
è escluso movimentare files a manina.
La verisione definitiva del sito dovrebbe avere alcune centinaia di foto,
forse oltre il migliaio, quindi devo gestirli "en masse".
Le directory sono organizzate così:
Livello 1: soggetti
Livello 2: categorie
Livello 3: immagini scartate
P.es potrei avere:
Soggetto1
-categoria1.1
--file1.1.1
--file1.1.2
--scartate1.1
---filescarto1.1.1
---filescarto1.1.2
...
-categoria1.2
--file1.2.1
--file1.2.2
--scartate1.2
---filescarto1.2.1
---...
Soggetto2
...
Ogni fileX.Y.Z avrebbe un suo corrispondente file_MOD_X.Y.Z che risiede
nella stessa directory. Questo mi assicura consistenza e unicità dei nomi.
I vari filescartoX.Y.Z invece non verrebbero modificati.
A questo punto, sul sito devo mettere i soli files elaorati, anzi, detti
files devo darli in pasto a JAlbum COME SE FOSSERO TUTTI DENTRO UN'UNICA
DIRECTORY
Potrei pensare di replicare la struttura dell'albero di partenza
limitatamente ai files modificati e ai loro folder, ma mi sembra un po'
complicato, anche se potrei utilizzare rdiff-backup che tiene conto di
aggiunte e cancellazioni (ma dovrei toglierlgli poi la directori in cui si
salva i suoi dati), salvo il fatto che non mi sembra che rdiff-backup possa
essere limitato circa il tipo di files da considerare (ora mi rileggo il
man), quindi tempo che mi copierebbe tutto il tree originale, inclusi i file
originali e quelli di scarto. L'albero così creato dovrei poi ripulirlo con
un altro find.
Belìn, che casino!
Certo, potrei replicare la struttura d'origine e ripulirla lasciando solo i
files che mi interessano (cosa comunque non semplicissima), ma sarebbe un
inutile spreco di tempo, risolrse ecc., dato che mi troverei poi a
cancellare il 90% di quello che ho copiato: gli scarti sono più di quelli
conservati, e i file originali sono 4 o 5 volte più grandi di quelli
elaborati, per non parlare di files particolari, tipo filmati o altro che
sono a volte di dimensioni notevoli (10, 30 mega) e che di solito
ridimensiono a manina con avidemux (fortunatamente non sono molti).
Provo quindi a riepilogare:
1. devo modificare files che provengono da fonti disparate, con nomi
disparati e spesso coincidenti
2. i files modificati hanno lo stesso nome del file originale più un
pre/post fisso
3. per evitare di copiare files con nomi uguali nella stessa directory,
mantengo i files modificati nelle stesse directory dove si trovano i files
originari
4. i file modificati rappresentano in volume circa il 5/10% dei dati totali
(anche meno)
5. detti file modificati devono essere gestiti "en masse" da JAlbum per
pubblicazione su un sito: JAlbum vuole come input una directory da cui
partire, e non deve contenere roba che non si voglia pubblicare
6. nell'ipotesi di copiare i files, eventualmente rinominandoli
aggiungendoci il nome delle directory superiori, c'è il problema del rename
di files e directory
7. nelli'potesi di replicare la struttura d'origine limitatamente al 5/10%
di files utili, eventualmente usando hardlink, si devono fare dei bei numeri
con find (credo)
Spero di essere stato sufficientemente chiaro, grazie comunque per avere
letto fin qui :)
C.


 per curiosità mia, puoi spiegare più in dettaglio che cosa devi
realizzare?
Fatto: vedi risposta a Devide Bianchi
Grazie


 
non ti basterebbe un semplice:
rsync -a --include "*/" --include "*_MOD_*" --exclude "*" --delete /archivio/di/lavoro /archivio/di/jalbum
avresti la stessa struttura di directory ma contenente soltanto i file _MOD_
questo ogni volta che devi creare il tuo album.

 rsync -a --include "*/" --include "*_MOD_*" --exclude "*" --delete
/archivio/di/lavoro /archivio/di/jalbum
Bella lě, dopo ci provo, intanto grazie!!
A buon (p)rendere :)


 presentato all'utente.
Probabilmente č come dici tu, comunque QT mi ha indicato una soluzione
abbastanza semplice basata su rsync (che conoscevo solo di nome) e che
potrebbe risolvere il problema.
Grazie comunque :)
