this post was submitted on 18 Mar 2025
46 points (100.0% liked)

Selfhosted

46672 readers
568 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

Hello selfhosted! Sometimes I have to transfer big files or a large amounts of small files in my homelab. I used rsync but specifying the IP address and the folders and everything is bit fiddly. I thought about writing a bash script but before I do that I wanted to ask you about your favourite way to achieve this. Maybe I am missing out on an awesome tool I wasn't even thinking about.

Edit: I settled for SFTP in my GUI filemanager for now. When I have some spare time I will try to look into the other options too. Thank you for the helpful information.

you are viewing a single comment's thread
view the rest of the comments
[–] tal 1 points 3 months ago* (last edited 3 months ago)

I used rsync but specifying the IP address and the folders and everything is bit fiddly.

If this is Linux:

  • You can throw an entry in /etc/hosts to add a hostname mapping, even if you don't want to set up DNS:

      192.168.34.16       tea
    
  • It looks like bash has tab-completion for rsync paths set up by default these days on my Debian box. Will probably need to have passwordless or ssh-agent-based pub/privkey authentication set up in some fashion.

  • If you don't need rsync's functionality -- replicating attributes and reasonable resuming and doing partial copies -- I tend to use lftp, which supports sftp, an ssh-based file-transfer mechanism; one uses something like sftp://remotehost/remotepath. That's more-comfortable to browse, can bip around the local and remote filesystem with tab-completing cd, lcd, pwd, and lpwd and list remote files. The mirror and mirror -R command will move a file tree from or to the remote system.

  • If you do want rsync's "update changed files" functionality, and also want bidirectional synchronization in each direction instead of rsync's unidirectional functionality


I do this to maintain a synchronized directory of videos that I want to be able to watch offline on various devices, among other things


I use unison. You can set this up to auto-synchronize a set of directories. If you've got a preconfigured set of directories to synchronize set up, just type "unison", and bam.

  • If I'm doing a lot of browsing and work on the remote end, I use emacs's dired plus TRAMP as a rough approximation of a "two-pane file manager", more-properly called an orthodox file manager. emacs /ssh:remotehost:/remotepath localpath will fire it up. TRAMP is pretty clever, tries to do stuff on the remote machine as much as possible -- like, you can do stuff like version-control on remote directories and it'll use git on the remote machine, can grep through the remote file tree without transferring the files locally, etc. That being said, this is probably mostly-applicable to users who already heavily use emacs, but it's a handy technique if you have only a low-bandwidth connection and need to work on files remotely. I have emacs set up to default to using the "other pane" as a default target for things like copy and move commands using the following text in my init.el:

      ;; Try suggesting dired targets                                                                                                
      (setq dired-dwim-target t) 
    
  • If I'm wanting to play a video file remotely, I'll sometimes do a sshfs mount using FUSE:

      $ mkdir videos
      $ sshfs remotehost:/videos `pwd`/videos
      $ mpv videos/vid01.mkv
      $ umount videos