this post was submitted on 19 Jun 2025
10 points (100.0% liked)

Shell Scripting

1482 readers
2 users here now

From Ash, Bash and Csh to Xonsh, Ysh and Zsh; all shell languages are welcome here!

Rules:
  1. Follow Lemmy rules!
  2. Posts must relate to shell scripting. (See bottom of sidebar for more information.)
  3. Only make helpful replies to questions. This is not the place for low effort joke answers.
  4. No discussion about piracy or hacking.
  5. If you find a solution to your problem by other means, please take your time to write down the steps you used to solve your problem in the original post. You can potentially help others having the same problem!
  6. These rules will change as the community grows.

Keep posts about shell scripting! Here are some guidelines to help:


In general, if your submission text is primarily shell code, then it is welcome here!

founded 2 years ago
MODERATORS
 

Ever since I started down the self-hosting rabbit hole one issue I've been constantly annoyed with is transferring files between machines. Especially files which I am currently working on and that I want to periodically transfer to a specific remote location.

Rsync has been my go to tool for file transfers and backups but I absolutely hate making commands for it. I was getting lost in a wall of text with all my rsync aliases.

The script I created helps me organize those commands by placing all the information for an rsync command into an easier to read dot-file. The script will read the dot-file, update the rsync command and run it. It's also set up to preview file transfers with rsync's dry run option. I've also added a few other features to make the script more flexible including being able to quickly backup a directory that I'm currently working in.

For self-hosting, I find working with files a bit easier to organize than a text full of aliases although I can see it easy to get overwhelmed with dot-files if some people aren't organized.

I've also made it as POSIX shell friendly as possible. I know a couple things I did aren't fully POSIX compliant currently but I that's something to work towards. This is also the first programming thing I ever completed so I'm quite happy with how it turned out.

If at least one other person finds this script useful, that would be pretty neat :)

you are viewing a single comment's thread
view the rest of the comments
[–] confusedpuppy@lemmy.dbzer0.com 2 points 1 week ago* (last edited 1 week ago)

I use a lot of commands that either use the --delete option or require remote root access in order to preserve hard links and other attributes.

I didn't know that was an issue. I was going from my own limited experience with linux.

I already set an option to disable the root requirement at the beginning of the script. Simply changing the value to 0 will disable it and will let rsync display it's own errors.

What exactly makes it suspect so I know what I'm doing?