FLING(1)

πŸ’– FLING(1) πŸ’–

okay bestie, welcome to the fling page β€” it's a General Commands Manual situation, section 1, and honestly? she's serving speed and nothing else. let's get into it πŸ¦‹


✨ NAME ✨

fling β€” quickly copy stdin over trusted network

like. that's the whole brand. no notes. πŸ’…


🌸 SYNOPSIS 🌸

fling [-vp] host port
fling [-vp] [user@]host:/path/to/output
fling [-vp] -r port >output
fling [-vp] -r port -ooutput

four whole moods, pick your fighter πŸ‘‘


πŸŽ€ DESCRIPTION πŸŽ€

okay so here's the tea: fling transfers data quickly over a trusted network. and when we say trusted, we mean it β€” it does not encrypt the data. zero encryption. none. it's giving "we're all friends here" energy πŸ™ˆ

the way it gets fast is genuinely iconic: it tries to avoid copying data between kernel and userspace wherever it can. so on systems with low memory bandwidth, you're gonna see the most improvement over other tools like netcat. that's the whole flex. πŸ”₯

the input is read from stdin, which can be a file or a pipe. either one, she'll take it.

heads up bestie: fling needs to be installed on both ends of the transfer. both. no sneaking one side past the vibe check.

πŸ’… OPTIONS πŸ’…

  • -r β€” receive instead of sending. the received file gets written by default to stdout. yes, by default. we'll get to -o in a sec.
  • -v β€” be more verbose about what's happening. she'll tell you the lore as it unfolds.
  • -p β€” report progress during transfer. little bar, little numbers, little serotonin boost. ⭐
  • -o β€” specify output file when receiving, to be used instead of stdout.

🌈 EXAMPLE 🌈

you need to run fling on both ends of the transfer, bestie. both. so run it on the receiver first:

fling -r 12756 > file.dat

alternatively, you can run this to set the output file with an option instead:

fling -r 12756 -o file.dat

and then on the sender:

fling other.host.address 12756 < file.dat

and now for the plot twist 🫢 β€” you can also use the experimental support for ssh, and have fling run itself on the remote end, picking a port automatically. this avoids having to start it manually in a different terminal, which, let's be honest, was giving "two tabs and a prayer". note that the actual transfer is insecure and doesn't go via ssh. the ssh is just the matchmaker, not the date. 😭

fling other.host:data < data

🧚 ENVIRONMENT 🧚

  • FLING_REMOTE_EXE β€” name of command on the remote end for fling itself. should include the full path if not found via PATH.
  • FLING_SSH β€” name of command locally to use ssh. defaults to "ssh" if not set.

⚠️ NOTES ⚠️

the SSH support in fling is experimental. it may have bugs. (she's trying her best, okay?!)

note that ssh is only used to set up the connection between the sending fling and the receiving fling. the actual connection through which data is transferred is still a separate cleartext connection. so like, don't let the ssh outfit fool you. 🩷

you should not use fling if you mind that data is transferred over an unencrypted channel, or that an attacker may modify data as it is transferred.

fling aims to be fast, not secure. that's her whole personality. periodt. πŸ’€


okay and that's the page, bestie!! πŸŽ€ this was the FLING(1) page out of the General Commands Manual, section 1 β€” go forth and copy your stdin over a network you actually trust, and stay hydrated. mwah πŸ’œπŸ¦‹βœ¨

πŸ“¦ where this page comes from