3.3v to 5v inverter by bc547

You can indeed.
The diagram attached works for both BJT's and MOSFETs (though for FETs you omit the 4.7k resistor).
It is also bidirectional so can shift up and shift down.
It is non-inverting so won't mess around with the signal.

For SD cards though you can just get away with a 1.8k and 3.3k resistor forming a potential divider to shift the signals from the Arduino down to 3.3ish volts. For the MISO signal, you can just connect it directly to the arduino as it will happily register 3.3V as a logic 1.

(P.S. Sorry for the zigzzaggy resistors, the program I drew that in favours those to the box ones)

Transistor Level shift.png