Sovrascrivere un file tramite scp

Installazione, configurazione e uso di programmi e strumenti.
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2854
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Sovrascrivere un file tramite scp

Messaggio da DoctorStrange »

Buongiorno a tutti.

Oggi, cercavo di salvare un file sul mio piccolo NAS remoto tramite scp. Premetto che la sintassi del comando usata è corretta, perchè il problema non è nel comando stesso:

Codice: Seleziona tutto

sudo scp -P 80 /home/$USER/Scrivania/file-locale-da-copiare remote-username@remote-hostname:/home/$USER/path-di-destinazione-remota
Con questo comando, la connessione e la copia del file, funziona solitamente senza problemi, oggi però ho cercato di ripetere il medesimo comando per sovrascrivere sul NAS remoto un precedente file, che quindi aveva lo stesso nome.

Scp mi ha risposto che non poteva procedere alla copia, perchè ha trovato sulla directory di destinazione un file con lo stesso nome.

Al momento ho aggirato il problema cambiando il nome del file, ma vorrei chiedere: esiste un'opzione o qualche workaround per imporre ad scp di sovrascrivere il vecchio file?

Ho provato a consultare il manpage di scp stesso, ma non mi pare di aver trovato nulla che rispondesse alle mie esigenze.

Altra domanda: se invece di scp, mi fossi servito di "smbclient", la sovrascrittura del file di destinazione sarebbe stata nativa, od avrei avuto il medesimo problem? In pratica, usando il comando "put" di smbclient, il file di destinazione sarebbe stato sostituito in automatico?

Grazie mille a tutti.

Un saluto e buona giornata.
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Sovrascrivere un file tramite scp

Messaggio da rai »

Un workaround potrebbe essere fare uno script che si occupa della cosa.

In pseudocodice rozzo:
per ogni file da copiare, verifica la sua esistenza sulla destinazione e in caso positivo lo rinomina; esegue scp sul file, se scp esce senza errore elimina la copia, se no ripristina il nome originale
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2854
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: Sovrascrivere un file tramite scp

Messaggio da DoctorStrange »

Usando solo scp, come si fa ad eliminare un file sulla destinazione? Io finora l'ho sempre usato solamente per aggiungere files sulla destinazione remota.

Se mi connetto tramite SSH al NAS in remoto, posso eliminare il file con il classico "rm", ma servendomi di scp, ed operando da locale per eliminare un file in remoto, non lo sò fare.
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Sovrascrivere un file tramite scp

Messaggio da rai »

No, usando "solo" scp non credo proprio che si possa fare. Io ti suggerivo di scrivere un wrapper ad scp, che lo esegue solo dopo avere preparato la destinazione. Una cosa di questo tipo:

Codice: Seleziona tutto

...
for f in *; do
if ssh -q $HOST [[ -e "$DESTINAZIONE/$f" ]]; then
    ssh -q $HOST mv "$DESTINAZIONE/$f" "$DESTINAZIONE/$f.old"
else
    <il tuo comando scp> && ssh $HOST rm -rf "$DESTINAZIONE/$f.old" || ssh -q $HOST mv "$DESTINAZIONE/$f.old" "$DESTINAZIONE/$f"
fi
...
Inoltre non so aiutarti con smb. Per le situazioni in cui è frequente la modifica e copia su remoto degli stessi file forse userei rsync

rsync ha solo la limitazione che può copiare solo locale -> remoto o viceversa, non remoto -> remoto
Avatar utente
Filoteo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1318
Iscrizione: venerdì 28 agosto 2015, 9:38
Desktop: Gnome
Distribuzione: Arch Linux

Re: Sovrascrivere un file tramite scp

Messaggio da Filoteo »

Scp mi ha risposto che non poteva procedere alla copia, perchè ha trovato sulla directory di destinazione un file con lo stesso nome
A me scp sovrascrive senza problemi il file già esistente. Puoi postare l’errore esatto? Anche i permessi del file già presente nella destinazione. Magari anche quelli della cartella contenitrice.
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2854
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: Sovrascrivere un file tramite scp

Messaggio da DoctorStrange »

Filoteo [url=https://forum.ubuntu-it.org/viewtopic.php?p=5068382#p5068382][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Scp mi ha risposto che non poteva procedere alla copia, perchè ha trovato sulla directory di destinazione un file con lo stesso nome
A me scp sovrascrive senza problemi il file già esistente. Puoi postare l’errore esatto? Anche i permessi del file già presente nella destinazione. Magari anche quelli della cartella contenitrice.
La tua è proprio un'ottima idea. Faccio il mea culpa per non averci pensato.

Dopo pranzo provvederò immediatamente.
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Sovrascrivere un file tramite scp

Messaggio da rai »

Filoteo ha scritto:A me scp sovrascrive senza problemi il file già esistente.
Ah ecco. In effetti era strano che scp (mai usato, ne ho solo letto il man) si comportasse diversamente da tool analoghi per es. da cp
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: Google [Bot] e 25 ospiti