A recipe, not a script
Everything a shell script would hard-code is a field you can read a year later. What goes: one folder or several, and for each whether its contents land straight in the destination, the folder itself does, or a subfolder you name — shown as a real path, so the trailing-slash mistake cannot happen. Where to: servers ticked one by one, or whole groups, and a group means whoever is in it on the day, so a server added next month is included then. Into which folder, and whether a box that lacks it should have it made. As the login, or as root. What is run before the files go in and after.
And what never leaves your computer: an ignore list, one for the whole deployment, that starts with the usual — version control, node_modules, logs, and .env, so a local secret never overwrites a server's. It is yours to empty if you mean to send everything.










