Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

ltfs_ordered_copy: copying several files into a directory fails with 'Is a directory' since v2.4.9.0

Aperta Adatta ai principianti
#661 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 6 giorni

@MitchelTighe ci sta già lavorando.

Dal 16/10/2026.

  • #662 di @MitchelTighe — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
82/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
cli

Direzione di ricerca

Inizia dallo script ltfs_ordered_copy in src/utils, da CopyItem.run() e dalla funzione di supporto _run_copy() che chiama, la quale apre la destinazione con open(self.dst, 'wb'). Riproduci il problema con i comandi mkdir e ltfs_ordered_copy della issue, usando due file semplici e una directory esistente come destinazione. È completato quando entrambi i file vengono copiati nella directory con il proprio nome, i casi --keep-tree e a sorgente singola continuano a comportarsi come prima e il percorso a sorgente singola resta invariato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Describe the bug

Since v2.4.9.0, ltfs_ordered_copy fails every file when several files (or a -t list from stdin) are copied into a destination directory. This is the second and fourth example in the man page:

$ ltfs_ordered_copy /foo/aaa /foo/bbb /bar
$ find /foo/ddd -type f | ltfs_ordered_copy -t /bar

Output:

Failed to copy "src/a.txt" to "dst": [Errno 21] Is a directory: 'dst'
Failed to copy "src/b.txt" to "dst": [Errno 21] Is a directory: 'dst'
Copied 0 files, Failed 2 files.

To Reproduce

mkdir src dst && echo aaa > src/a.txt && echo bbb > src/b.txt
ltfs_ordered_copy src/a.txt src/b.txt dst

The same command with src/utils/ltfs_ordered_copy taken from earlier commits:

Commit Result
efc9e3a (Release/v2.4.9.0, #649) Copied 0 files, Failed 2 files
efc9e3a~1 (2026-07-29) Copied 2 files
fd41c66 (2023-11-27) Copied 2 files
303ca43 (2020-12-09) Copied 2 files

Cause

#649 replaced shutil.copy2() / shutil.copy() in CopyItem.run() with _run_copy(), which does open(self.dst, 'wb') so it can drive the progress bar. shutil.copy accepted a directory as the destination and appended the source file name. open() does not, so any plain-file source whose destination is a directory fails. With --keep-tree the destination is a full file path, so that case still works. The single-source case is handled separately with shutil.copy, so it is also unaffected.

Expected behavior

Files are copied into the directory under their own names, as before v2.4.9.0.

Environment

Python 3, current main (efc9e3a). Reproduced off-tape with a stub xattr module, so the non-LTFS destination path is exercised. The failure is in the copy step itself, which LTFS and non-LTFS destinations share.

Lingua principale
C
Stelle
358
Fork
111
Merge medio
5g 1h
PR unite (30g)
2

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di LinearTapeFileSystem/ltfs

Tutte le issue di LinearTapeFileSystem/ltfs

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.