DriveApp's file.makeCopy(name, targetFolder) creates a brand-new file with a new file ID. The original stays exactly where it is. For Docs, Sheets, and Slides this means a full content clone — not a shortcut, not a reference. For binary files (PDFs, images, zips) the bytes are duplicated verbatim.
The first time I hit a folder with 200 files, I ran the script twice by accident and ended up with 400. That's why the script pre-loads a name map from the destination before it touches anything. The guard is name-based, so if two source files share a name only the first one gets copied — an acceptable trade-off for a simple utility. If your folder has name collisions, switch the guard key to file.getId() and store copies' source IDs in a PropertiesService cache instead.
Moving a file is different: Drive has no native move via Apps Script (no file.moveTo() until the advanced Drive API). The classic workaround is targetFolder.addFile(file) followed by sourceFolder.removeFile(file). Those calls manipulate folder membership without duplicating content, so the file ID stays the same. Use that pattern if you want a move, not a copy.