ts-binds binds two different folders on your device so that both folders share the same contents
What does it do
Essentially, this "binding" method is widely used to save space on internal storage!
Derived from a very long-living trick for users who are struggling with the internal storage space available on their phones, while at the same time has the benefit of inserting an SD card, ts-binds will make use of already available functions on your device, to mirror a path to another path, effectively making both paths indistinguishable.
For example, if you mirror the Download folder on Internal with the Stuff from Internet folder on your SD Card, the same list of cat pictures will be shown on both directories when navigated via a file manager, and any changes will take effect on both paths but only the folder in the external path is physically modified.
This saves space because the files physically reside on the external storage instead of internal storage.
A Feature or an Extension?
ts-binds although seemed to be mildly complicated, it relies heavily on the functionality of a built-in kernel feature through the use of binary mount. ts-binds itself doesn't come with the ability, but more like an extension to make use of the feature with less hurdles on the user's end. It expands on age-old trick many Android powerusers use(d). Without "mount" or the "bind" ability, ts-binds will be absolutely useless.
Here comes an issue; with many different Android implementations, the trick may not work for everyone. The fact of how OEM separates the internal and external storages on the ROM level can be cumbersome most of the times, to everyone.
If ts-binds fail to work out-of-the-box for you, workarounds may be available, I will try to find it as long as you participate, but my power is limited. If any known workarounds cannot be made, then I'd like to apologise beforehand. 🙁
- Automated mount on boot based on user-configured path-list in internal storage
- Robust functions available for use in Terminal
- Bind or unbind specific “folder pair” that you named
How to use
- Install module by flashing via recovery or selecting the zip in Magisk Manager.
- Once you reboot, a new file with the name
ts-binds-folderlist.txtwill be created in your internal storage.
- Edit the file and add your own folder pair. In-depth learning here.
- Save the file, reboot and forget! Or if you don’t want to reboot, open a terminal emulator and run
su -c tsbinds reinit
- Any changes that you wish to make in the future can be done by editing the file again, and re-run
tsbinds reinit. As easy as that.
- Android version ≥ 4.4
- Magisk version ≥17, stable versions only. I do not test, nor entertain beta or Canary versions.
Other root solution or /system-integrated support is not provided due to the complicated nature of init.d in Android. You can however, make changes to ts-binds' script to not use any Magisk-dependant paths.
Risk of data loss?
When I code the module, I take the utmost concerns on data safety and integrity and I can hereby say that the module pose absolute zero risk on data loss on the automated part of things. In essence, you will not lose any files if you use the module by its own.
However, if you fail to acknowledge the strong warning above, which explains a very manual action committed by a user, then of course, data loss is possible as it is outside of what the module could handle.
To demonstrate an example of this, we assume that a folderpair of "Ayam" has been made and this is the folderpair code we have populated in our
folderbind Ayam $sd/A $int/B
Now, if you ever select the files in A, and then paste it in B, this is where you are mercilessly killing your files. Of course, applies in reverse too. So, make sure you don't do that!
ts-binds also provides a few useful terminal functions that you can use to your advantage. To see available options, run
tsbinds help in a terminal emulator. Note that using
tsbinds require an elevated shell (root).
Read more about contributing here.
Maybe how ts-binds works doesn't suit your preferences. If you wish to still have this feature but using an alternative module, here are the other two available from the magisk repo:
- Accommodate ts-encfs features