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.

  • Xanza@lemm.ee
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    rclone. I have a few helper functions;

    fn mount { rclone mount http: X: --network-mode }
    fn kdrama {|x| rclone --multi-thread-streams=8 --checkers=2 --transfers=2 --ignore-existing --progress copy http:$x nas:Media/KDrama/$x --filter-from
    ~/.config/filter.txt }
    fn tv {|x| rclone --multi-thread-streams=8 --checkers=2 --transfers=2 --ignore-existing --progress copy http:$x nas:Media/TV/$x --filter-from ~/.config/filter.txt }
    fn downloads {|x| rclone --multi-thread-streams=8 --checkers=2 --transfers=2 --ignore-existing --progress copy http:$x nas:Media/Downloads/$x --filter-from ~/.config/filter.txt }
    

    So I download something to my seedbox, then use rclone lsd http: to get the exact name of the folder/files, and run tv "filename" and it runs my function. Pulls all the files (based on filter.txt) using multiple threads to the correct folder on my NAS. Works great, and maxes out my connection.

  • magic_smoke@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago
    • sftp for quick shit like config files off a random server because it easy
    • rsync for big one-time moves
    • smb for client-facing network shares
    • NFS for SAN usage (mostly storage for virtual machines)
  • neidu3@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

    rsync if it’s a from/to I don’t need very often

    More common transfer locations are done via NFS

  • hendrik@palaver.p3x.de
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    I’d say use something like zeroconf(?) for local computer names. Or give them names in either your dns forwarder (router), hosts file or ssh config. Along with shell autocompletion, that might do the job. I use scp, rsync and I have a NFS share on the NAS and some bookmarks in Gnome’s file manager, so i just click on that or type in scp or rsync.

  • e0qdk@reddthat.com
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    People have already covered most of the tools I typically use, but one I haven’t seen listed yet that is sometimes convenient is python3 -m http.server which runs a small web server that shares whatever is in the directory you launched it from. I’ve used that to download files onto my phone before when I didn’t have the right USB cables/adapters handy as well as for getting data out of VMs when I didn’t want to bother setting up something more complex.

  • Turboblack@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    you can use a regular ftp server with administrator and user rights, distribute rights to those who replenish, and those who just take - guests at home I transfer in this way from computer to computer without connecting them to a common network, what could be simpler? why invent some ways with keys or bash if there is a 40-year-old technology that just works great, and to open ftp it is enough to enter the IP address in the explorer

  • tal@lemmy.today
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year 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
      
  • sugar_in_your_tea@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    What’s wrong with rsync? If you don’t like IP addresses, use a domain name. If you use certificate authentication, you can tab complete the folders. It’s a really nice UX IMO.

    If you’ll do this a lot, just mount the target directory with sshfs or NFS. Then use rsync or a GUI file manager.