Are you completely sure that the command below is what you actually ran? And that you didn't get any error messages?
adb push large.zip /data/local/
When I try doing something similar, I get:
adb push adb.exe /data/local/
adb: error: failed to copy 'adb.exe' to '/data/local/adb.exe': remote couldn't create file: Permission denied
adb.exe: 1 file pushed, 0 skipped. 120.7 MB/s (5857056 bytes in 0.046s)
That looks as if it succeeded, if you only look at the last line of the output, but it actually failed. This isn't very well handled, because the data is actually transmitted, which can take noticeable amounts of time for a large file. I've reported this in Google's issue tracker.
Addendum: I tried a further experiment:
Start an adb shell
session and cd /data/local/tmp
. That's a sub-directory of /data/local
, where the shell account can create files, and generally do what it likes. Get the free space there:
df -k .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/block/dm-52 111478764 15015348 96332344 14% /storage/emulated/0/Android/obb
Start an additional command line window, and push a large file:
adb push largefile.zip /data/local
adb: error: failed to copy 'largefile.zip' to '/data/local/largefile.zip': remote couldn't create file: Permission denied
largefile.zip: 1 file pushed, 0 skipped. 30.4 MB/s (286500912 bytes in 8.992s)
Them check the free space again, and it has decreased, but not by anything like the size of the pushed file:
df -k .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/block/dm-52 111478764 15015444 96332248 14% /storage/emulated/0/Android/obb
That doesn't prove there isn't a temporary directory used, but it does show that if there is, it gets cleaned up when adb push
hits a permissions problem.