To resize a ext2/3/4 volume, use
resize2fs. You need to have the partition unmounted to shrink the filesystem. It will move your data (if needed), as well as any inodes, etc.
For example, if you wanted to shrink
/dev/sda1 to 1073741824 bytes (one GiB), you'd run:
# fsck -f /dev/sda1
# resize2fs /dev/sda1 1073741824
After that completes, you'd then change the size of the partition to be 1073741824 bytes (or slightly larger if you insist on aligning to a "track" boundary)
You may find the
-M option (make it as small as possible) useful as well.
You can also expand filesystems with
resize2fs; if you omit the size, it'll expand it to fill the partition.
If you're just wanting to back up some files to move to another disk, you should use backup utilities like
cpio, etc. Or alternatively, disk imaging programs like
partimage (which will only need to copy used space). Or dedicated disk imaging systems like Clonezilla (which will typically use one of those imaging programs under the hood).